<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::octree::OctreePointCloudSearch&lt; PointT, LeafContainerT, BranchContainerT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1octree_1_1_octree_point_cloud_search.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">类</a> &#124;
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="classpcl_1_1octree_1_1_octree_point_cloud_search-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::octree::OctreePointCloudSearch&lt; PointT, LeafContainerT, BranchContainerT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><b>Octree</b> pointcloud search class  
 <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="octree__search_8h_source.html">octree_search.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::octree::OctreePointCloudSearch&lt; PointT, LeafContainerT, BranchContainerT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1octree_1_1_octree_point_cloud_search.png" usemap="#pcl::octree::OctreePointCloudSearch_3C_20PointT_2C_20LeafContainerT_2C_20BranchContainerT_20_3E_map" alt=""/>
  <map id="pcl::octree::OctreePointCloudSearch_3C_20PointT_2C_20LeafContainerT_2C_20BranchContainerT_20_3E_map" name="pcl::octree::OctreePointCloudSearch_3C_20PointT_2C_20LeafContainerT_2C_20BranchContainerT_20_3E_map">
<area href="classpcl_1_1octree_1_1_octree_point_cloud.html" alt="pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;" shape="rect" coords="0,56,544,80"/>
<area href="classpcl_1_1octree_1_1_octree_base.html" alt="pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;" shape="rect" coords="0,0,544,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search_1_1prio_branch_queue_entry.html">prioBranchQueueEntry</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><b>Priority</b> queue entry for branch nodes  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search_1_1prio_branch_queue_entry.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search_1_1prio_point_queue_entry.html">prioPointQueueEntry</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><b>Priority</b> queue entry for point candidates  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search_1_1prio_point_queue_entry.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a0321f299befce56b8dfe769bc21b067c"><td class="memItemLeft" align="right" valign="top"><a id="a0321f299befce56b8dfe769bc21b067c"></a>
typedef boost::shared_ptr&lt; std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesPtr</b></td></tr>
<tr class="separator:a0321f299befce56b8dfe769bc21b067c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99f63bc0d03868c9a81608ca4ea80cb4"><td class="memItemLeft" align="right" valign="top"><a id="a99f63bc0d03868c9a81608ca4ea80cb4"></a>
typedef boost::shared_ptr&lt; const std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesConstPtr</b></td></tr>
<tr class="separator:a99f63bc0d03868c9a81608ca4ea80cb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3f879524c0ec18da3c4451eeafe0769"><td class="memItemLeft" align="right" valign="top"><a id="af3f879524c0ec18da3c4451eeafe0769"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:af3f879524c0ec18da3c4451eeafe0769"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f8088661c5340814ec584fed234971b"><td class="memItemLeft" align="right" valign="top"><a id="a6f8088661c5340814ec584fed234971b"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:a6f8088661c5340814ec584fed234971b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafe8edd385a4dd6c33d172905c8d3f19"><td class="memItemLeft" align="right" valign="top"><a id="aafe8edd385a4dd6c33d172905c8d3f19"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:aafe8edd385a4dd6c33d172905c8d3f19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7712400d276c978e2d55592593ffbdc"><td class="memItemLeft" align="right" valign="top"><a id="af7712400d276c978e2d55592593ffbdc"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:af7712400d276c978e2d55592593ffbdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acebc2f9148400e6d6e1f3ce2511d011a"><td class="memItemLeft" align="right" valign="top"><a id="acebc2f9148400e6d6e1f3ce2511d011a"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:acebc2f9148400e6d6e1f3ce2511d011a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8680d7754f3b9872f62319ad0d304cba"><td class="memItemLeft" align="right" valign="top"><a id="a8680d7754f3b9872f62319ad0d304cba"></a>
typedef std::vector&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, Eigen::aligned_allocator&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>AlignedPointTVector</b></td></tr>
<tr class="separator:a8680d7754f3b9872f62319ad0d304cba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a421f6d63e460a10852a52d1e44f5a6"><td class="memItemLeft" align="right" valign="top"><a id="a4a421f6d63e460a10852a52d1e44f5a6"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html">OctreePointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>OctreeT</b></td></tr>
<tr class="separator:a4a421f6d63e460a10852a52d1e44f5a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabd102fe0e24722872dee414c6178e33"><td class="memItemLeft" align="right" valign="top"><a id="aabd102fe0e24722872dee414c6178e33"></a>
typedef OctreeT::LeafNode&#160;</td><td class="memItemRight" valign="bottom"><b>LeafNode</b></td></tr>
<tr class="separator:aabd102fe0e24722872dee414c6178e33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81cf2cdbaf5211e5dee4c58bde0dd45d"><td class="memItemLeft" align="right" valign="top"><a id="a81cf2cdbaf5211e5dee4c58bde0dd45d"></a>
typedef OctreeT::BranchNode&#160;</td><td class="memItemRight" valign="bottom"><b>BranchNode</b></td></tr>
<tr class="separator:a81cf2cdbaf5211e5dee4c58bde0dd45d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1octree_1_1_octree_point_cloud')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;</a></td></tr>
<tr class="memitem:ac1f0efca932f13c22f61d93427c09cc3 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ac1f0efca932f13c22f61d93427c09cc3"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Base</b></td></tr>
<tr class="separator:ac1f0efca932f13c22f61d93427c09cc3 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad265334537cd8f7251272e33f5350d82 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ad265334537cd8f7251272e33f5350d82"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node.html">OctreeT::LeafNode</a>&#160;</td><td class="memItemRight" valign="bottom"><b>LeafNode</b></td></tr>
<tr class="separator:ad265334537cd8f7251272e33f5350d82 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8896c64b83f7a3cb13e81337cd03a1a inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ad8896c64b83f7a3cb13e81337cd03a1a"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">OctreeT::BranchNode</a>&#160;</td><td class="memItemRight" valign="bottom"><b>BranchNode</b></td></tr>
<tr class="separator:ad8896c64b83f7a3cb13e81337cd03a1a inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae53cfda82c353687bd18ac99eec61e42 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ae53cfda82c353687bd18ac99eec61e42"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">OctreeDepthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Iterator</b></td></tr>
<tr class="separator:ae53cfda82c353687bd18ac99eec61e42 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac535a4ebd87341d1c3535a9d07709fbe inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ac535a4ebd87341d1c3535a9d07709fbe"></a>
typedef const <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">OctreeDepthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstIterator</b></td></tr>
<tr class="separator:ac535a4ebd87341d1c3535a9d07709fbe inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7837e86e5a4556e96f749eef84fb28de inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a7837e86e5a4556e96f749eef84fb28de"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node_iterator.html">OctreeLeafNodeIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>LeafNodeIterator</b></td></tr>
<tr class="separator:a7837e86e5a4556e96f749eef84fb28de inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae9283106bdd1f4baca767f9c1659ab2 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="aae9283106bdd1f4baca767f9c1659ab2"></a>
typedef const <a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node_iterator.html">OctreeLeafNodeIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstLeafNodeIterator</b></td></tr>
<tr class="separator:aae9283106bdd1f4baca767f9c1659ab2 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a154692e65bad736c0f9ccae08bd2f8e7 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a154692e65bad736c0f9ccae08bd2f8e7"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">OctreeDepthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>DepthFirstIterator</b></td></tr>
<tr class="separator:a154692e65bad736c0f9ccae08bd2f8e7 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09e97a5ff995aff000d00a1884a8d483 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a09e97a5ff995aff000d00a1884a8d483"></a>
typedef const <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">OctreeDepthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstDepthFirstIterator</b></td></tr>
<tr class="separator:a09e97a5ff995aff000d00a1884a8d483 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa496eea223ddb37f57078aefa3ac6ad0 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="aa496eea223ddb37f57078aefa3ac6ad0"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_breadth_first_iterator.html">OctreeBreadthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>BreadthFirstIterator</b></td></tr>
<tr class="separator:aa496eea223ddb37f57078aefa3ac6ad0 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fe0d339bcefe6bb78c970766c266e75 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a4fe0d339bcefe6bb78c970766c266e75"></a>
typedef const <a class="el" href="classpcl_1_1octree_1_1_octree_breadth_first_iterator.html">OctreeBreadthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstBreadthFirstIterator</b></td></tr>
<tr class="separator:a4fe0d339bcefe6bb78c970766c266e75 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac404358de1dad9636986a4c5e2ce9cc4 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ac404358de1dad9636986a4c5e2ce9cc4"></a>
typedef boost::shared_ptr&lt; std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesPtr</b></td></tr>
<tr class="separator:ac404358de1dad9636986a4c5e2ce9cc4 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09158b24d28dbd025f43ba1d43970c2d inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a09158b24d28dbd025f43ba1d43970c2d"></a>
typedef boost::shared_ptr&lt; const std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesConstPtr</b></td></tr>
<tr class="separator:a09158b24d28dbd025f43ba1d43970c2d inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa35953d1ae5ae43c46b14a8e37a7e07c inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="aa35953d1ae5ae43c46b14a8e37a7e07c"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:aa35953d1ae5ae43c46b14a8e37a7e07c inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adea5e55af6bf6a590730d489506fa8c0 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="adea5e55af6bf6a590730d489506fa8c0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:adea5e55af6bf6a590730d489506fa8c0 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d2dd9664baa253ace9b403e2da3118a inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a0d2dd9664baa253ace9b403e2da3118a"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:a0d2dd9664baa253ace9b403e2da3118a inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fd8f89506e85d236b939c3b8e99e58d inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a3fd8f89506e85d236b939c3b8e99e58d"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html">OctreePointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>SingleBuffer</b></td></tr>
<tr class="separator:a3fd8f89506e85d236b939c3b8e99e58d inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e13d0899ada2ce4beffcabcea1ee150 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a2e13d0899ada2ce4beffcabcea1ee150"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html">OctreePointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a2e13d0899ada2ce4beffcabcea1ee150 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92b1f66a9250437d49e137c4a7b10456 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a92b1f66a9250437d49e137c4a7b10456"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html">OctreePointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a92b1f66a9250437d49e137c4a7b10456 inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ae7790d587f3c92c079f3f3b61f4c7f inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a7ae7790d587f3c92c079f3f3b61f4c7f"></a>
typedef std::vector&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, Eigen::aligned_allocator&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>AlignedPointTVector</b></td></tr>
<tr class="separator:a7ae7790d587f3c92c079f3f3b61f4c7f inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e31bea52fc307137dd237c82485553a inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a1e31bea52fc307137dd237c82485553a"></a>
typedef std::vector&lt; <a class="el" href="structpcl_1_1_point_x_y_z.html">PointXYZ</a>, Eigen::aligned_allocator&lt; <a class="el" href="structpcl_1_1_point_x_y_z.html">PointXYZ</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>AlignedPointXYZVector</b></td></tr>
<tr class="separator:a1e31bea52fc307137dd237c82485553a inherit pub_types_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1octree_1_1_octree_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1octree_1_1_octree_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;</a></td></tr>
<tr class="memitem:a75c739169220404bd10cb1a8daf9d26e inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a75c739169220404bd10cb1a8daf9d26e"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>OctreeT</b></td></tr>
<tr class="separator:a75c739169220404bd10cb1a8daf9d26e inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59d89fa2baebe87e9f40f82b3fafdce9 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a59d89fa2baebe87e9f40f82b3fafdce9"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">OctreeBranchNode</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>BranchNode</b></td></tr>
<tr class="separator:a59d89fa2baebe87e9f40f82b3fafdce9 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5c5e3243297d85e138962225a8cef98 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="ae5c5e3243297d85e138962225a8cef98"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node.html">OctreeLeafNode</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>LeafNode</b></td></tr>
<tr class="separator:ae5c5e3243297d85e138962225a8cef98 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace34402a120c21a7e1e6b9c7a82dd781 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="ace34402a120c21a7e1e6b9c7a82dd781"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a>&#160;</td><td class="memItemRight" valign="bottom"><b>BranchContainer</b></td></tr>
<tr class="separator:ace34402a120c21a7e1e6b9c7a82dd781 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac06e5e8e54bc3365aabf05b0cf895acd inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="ac06e5e8e54bc3365aabf05b0cf895acd"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>&#160;</td><td class="memItemRight" valign="bottom"><b>LeafContainer</b></td></tr>
<tr class="separator:ac06e5e8e54bc3365aabf05b0cf895acd inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a074dafbb60d1b44f539da230f05e3691 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a074dafbb60d1b44f539da230f05e3691"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">OctreeDepthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Iterator</b></td></tr>
<tr class="separator:a074dafbb60d1b44f539da230f05e3691 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc245e92766188028f9a59273a59f37d inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="adc245e92766188028f9a59273a59f37d"></a>
typedef const <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">OctreeDepthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstIterator</b></td></tr>
<tr class="separator:adc245e92766188028f9a59273a59f37d inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b8afe471af2ed5326867be2503f3077 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a8b8afe471af2ed5326867be2503f3077"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node_iterator.html">OctreeLeafNodeIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>LeafNodeIterator</b></td></tr>
<tr class="separator:a8b8afe471af2ed5326867be2503f3077 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3896da0d59a02cb30de9d74e2614b257 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a3896da0d59a02cb30de9d74e2614b257"></a>
typedef const <a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node_iterator.html">OctreeLeafNodeIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstLeafNodeIterator</b></td></tr>
<tr class="separator:a3896da0d59a02cb30de9d74e2614b257 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa56d6e9a0bc7a5cc55ec3229a3e685ba inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="aa56d6e9a0bc7a5cc55ec3229a3e685ba"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">OctreeDepthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>DepthFirstIterator</b></td></tr>
<tr class="separator:aa56d6e9a0bc7a5cc55ec3229a3e685ba inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c957452dc76d7c7014901affd6993c5 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a6c957452dc76d7c7014901affd6993c5"></a>
typedef const <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">OctreeDepthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstDepthFirstIterator</b></td></tr>
<tr class="separator:a6c957452dc76d7c7014901affd6993c5 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a49f93bc114440e695c9a5853cbe348 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a0a49f93bc114440e695c9a5853cbe348"></a>
typedef <a class="el" href="classpcl_1_1octree_1_1_octree_breadth_first_iterator.html">OctreeBreadthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>BreadthFirstIterator</b></td></tr>
<tr class="separator:a0a49f93bc114440e695c9a5853cbe348 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93f4e0b8aacde941fe102914e543e1f4 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a93f4e0b8aacde941fe102914e543e1f4"></a>
typedef const <a class="el" href="classpcl_1_1octree_1_1_octree_breadth_first_iterator.html">OctreeBreadthFirstIterator</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstBreadthFirstIterator</b></td></tr>
<tr class="separator:a93f4e0b8aacde941fe102914e543e1f4 inherit pub_types_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:adb3b8d2c1fa8f5548de1a4c3f4b8af2c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#adb3b8d2c1fa8f5548de1a4c3f4b8af2c">OctreePointCloudSearch</a> (const double resolution)</td></tr>
<tr class="memdesc:adb3b8d2c1fa8f5548de1a4c3f4b8af2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#adb3b8d2c1fa8f5548de1a4c3f4b8af2c">更多...</a><br /></td></tr>
<tr class="separator:adb3b8d2c1fa8f5548de1a4c3f4b8af2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a922594b383449d1cf7662b3551ea4aa6"><td class="memItemLeft" align="right" valign="top"><a id="a922594b383449d1cf7662b3551ea4aa6"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a922594b383449d1cf7662b3551ea4aa6">~OctreePointCloudSearch</a> ()</td></tr>
<tr class="memdesc:a922594b383449d1cf7662b3551ea4aa6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty class destructor. <br /></td></tr>
<tr class="separator:a922594b383449d1cf7662b3551ea4aa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb43baee48b83316cce5d4003561aabb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#afb43baee48b83316cce5d4003561aabb">voxelSearch</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point, std::vector&lt; int &gt; &amp;point_idx_data)</td></tr>
<tr class="memdesc:afb43baee48b83316cce5d4003561aabb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for neighbors within a voxel at given point  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#afb43baee48b83316cce5d4003561aabb">更多...</a><br /></td></tr>
<tr class="separator:afb43baee48b83316cce5d4003561aabb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69d3bb3040880d640a84361618964c1b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a69d3bb3040880d640a84361618964c1b">voxelSearch</a> (const int index, std::vector&lt; int &gt; &amp;point_idx_data)</td></tr>
<tr class="memdesc:a69d3bb3040880d640a84361618964c1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for neighbors within a voxel at given point referenced by a point index  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a69d3bb3040880d640a84361618964c1b">更多...</a><br /></td></tr>
<tr class="separator:a69d3bb3040880d640a84361618964c1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21d3818a5a56eef093a0f556b3b1ff60"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a21d3818a5a56eef093a0f556b3b1ff60">nearestKSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, int index, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances)</td></tr>
<tr class="memdesc:a21d3818a5a56eef093a0f556b3b1ff60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for k-nearest neighbors at the query point.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a21d3818a5a56eef093a0f556b3b1ff60">更多...</a><br /></td></tr>
<tr class="separator:a21d3818a5a56eef093a0f556b3b1ff60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa631ebe91256e5e62d092eab41e63ab1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#aa631ebe91256e5e62d092eab41e63ab1">nearestKSearch</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p_q, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances)</td></tr>
<tr class="memdesc:aa631ebe91256e5e62d092eab41e63ab1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for k-nearest neighbors at given query point.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#aa631ebe91256e5e62d092eab41e63ab1">更多...</a><br /></td></tr>
<tr class="separator:aa631ebe91256e5e62d092eab41e63ab1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c7167376eca831089b7848438ffdb82"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a6c7167376eca831089b7848438ffdb82">nearestKSearch</a> (int index, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances)</td></tr>
<tr class="memdesc:a6c7167376eca831089b7848438ffdb82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for k-nearest neighbors at query point  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a6c7167376eca831089b7848438ffdb82">更多...</a><br /></td></tr>
<tr class="separator:a6c7167376eca831089b7848438ffdb82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76f66f61c1561a260c9dfd7a91bce860"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a76f66f61c1561a260c9dfd7a91bce860">approxNearestSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, int query_index, int &amp;result_index, float &amp;sqr_distance)</td></tr>
<tr class="memdesc:a76f66f61c1561a260c9dfd7a91bce860"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for approx. nearest neighbor at the query point.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a76f66f61c1561a260c9dfd7a91bce860">更多...</a><br /></td></tr>
<tr class="separator:a76f66f61c1561a260c9dfd7a91bce860"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedaa8f43355000dbb0acc811c4b321fb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#aedaa8f43355000dbb0acc811c4b321fb">approxNearestSearch</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p_q, int &amp;result_index, float &amp;sqr_distance)</td></tr>
<tr class="memdesc:aedaa8f43355000dbb0acc811c4b321fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for approx. nearest neighbor at the query point.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#aedaa8f43355000dbb0acc811c4b321fb">更多...</a><br /></td></tr>
<tr class="separator:aedaa8f43355000dbb0acc811c4b321fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dbe80e71348afa35b7eea4e0d7de225"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9dbe80e71348afa35b7eea4e0d7de225">approxNearestSearch</a> (int query_index, int &amp;result_index, float &amp;sqr_distance)</td></tr>
<tr class="memdesc:a9dbe80e71348afa35b7eea4e0d7de225"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for approx. nearest neighbor at the query point.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9dbe80e71348afa35b7eea4e0d7de225">更多...</a><br /></td></tr>
<tr class="separator:a9dbe80e71348afa35b7eea4e0d7de225"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2af4c4588b2b73cfcd74fb1f906f2b45"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2af4c4588b2b73cfcd74fb1f906f2b45">radiusSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, int index, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0)</td></tr>
<tr class="memdesc:a2af4c4588b2b73cfcd74fb1f906f2b45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for all neighbors of query point that are within a given radius.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2af4c4588b2b73cfcd74fb1f906f2b45">更多...</a><br /></td></tr>
<tr class="separator:a2af4c4588b2b73cfcd74fb1f906f2b45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e8ab16c43fca6296b1c38fd5c9028b7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a3e8ab16c43fca6296b1c38fd5c9028b7">radiusSearch</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p_q, const double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a3e8ab16c43fca6296b1c38fd5c9028b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for all neighbors of query point that are within a given radius.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a3e8ab16c43fca6296b1c38fd5c9028b7">更多...</a><br /></td></tr>
<tr class="separator:a3e8ab16c43fca6296b1c38fd5c9028b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa074a6d13e7b9399e0cb31e23da6d10"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#afa074a6d13e7b9399e0cb31e23da6d10">radiusSearch</a> (int index, const double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:afa074a6d13e7b9399e0cb31e23da6d10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for all neighbors of query point that are within a given radius.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#afa074a6d13e7b9399e0cb31e23da6d10">更多...</a><br /></td></tr>
<tr class="separator:afa074a6d13e7b9399e0cb31e23da6d10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae89d60007b4ba6a92e3c3dc879ab9538"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#ae89d60007b4ba6a92e3c3dc879ab9538">getIntersectedVoxelCenters</a> (Eigen::Vector3f origin, Eigen::Vector3f direction, AlignedPointTVector &amp;voxel_center_list, int max_voxel_count=0) const</td></tr>
<tr class="memdesc:ae89d60007b4ba6a92e3c3dc879ab9538"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a PointT vector of centers of all voxels that intersected by a ray (origin, direction).  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#ae89d60007b4ba6a92e3c3dc879ab9538">更多...</a><br /></td></tr>
<tr class="separator:ae89d60007b4ba6a92e3c3dc879ab9538"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a4587e573349759836cf8146baeb00b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9a4587e573349759836cf8146baeb00b">getIntersectedVoxelIndices</a> (Eigen::Vector3f origin, Eigen::Vector3f direction, std::vector&lt; int &gt; &amp;k_indices, int max_voxel_count=0) const</td></tr>
<tr class="memdesc:a9a4587e573349759836cf8146baeb00b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get indices of all voxels that are intersected by a ray (origin, direction).  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9a4587e573349759836cf8146baeb00b">更多...</a><br /></td></tr>
<tr class="separator:a9a4587e573349759836cf8146baeb00b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf53270d1fe0590b0d44a286119cafb5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#abf53270d1fe0590b0d44a286119cafb5">boxSearch</a> (const Eigen::Vector3f &amp;min_pt, const Eigen::Vector3f &amp;max_pt, std::vector&lt; int &gt; &amp;k_indices) const</td></tr>
<tr class="memdesc:abf53270d1fe0590b0d44a286119cafb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for points within rectangular search area  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#abf53270d1fe0590b0d44a286119cafb5">更多...</a><br /></td></tr>
<tr class="separator:abf53270d1fe0590b0d44a286119cafb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1octree_1_1_octree_point_cloud')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;</a></td></tr>
<tr class="memitem:a4ebc0e3994827277f01fe12cb4fe8c2a inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a4ebc0e3994827277f01fe12cb4fe8c2a">OctreePointCloud</a> (const double resolution_arg)</td></tr>
<tr class="memdesc:a4ebc0e3994827277f01fe12cb4fe8c2a inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Octree pointcloud constructor.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a4ebc0e3994827277f01fe12cb4fe8c2a">更多...</a><br /></td></tr>
<tr class="separator:a4ebc0e3994827277f01fe12cb4fe8c2a inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8478220f036bebf326d52d0aa9812b7 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ab8478220f036bebf326d52d0aa9812b7"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ab8478220f036bebf326d52d0aa9812b7">~OctreePointCloud</a> ()</td></tr>
<tr class="memdesc:ab8478220f036bebf326d52d0aa9812b7 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty deconstructor. <br /></td></tr>
<tr class="separator:ab8478220f036bebf326d52d0aa9812b7 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87cad20428de876fcf789e674a39f503 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a87cad20428de876fcf789e674a39f503">setInputCloud</a> (const PointCloudConstPtr &amp;cloud_arg, const IndicesConstPtr &amp;indices_arg=IndicesConstPtr())</td></tr>
<tr class="memdesc:a87cad20428de876fcf789e674a39f503 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input data set.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a87cad20428de876fcf789e674a39f503">更多...</a><br /></td></tr>
<tr class="separator:a87cad20428de876fcf789e674a39f503 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2d8677cb9862db3dbb3469dea11448a inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad2d8677cb9862db3dbb3469dea11448a">getIndices</a> () const</td></tr>
<tr class="memdesc:ad2d8677cb9862db3dbb3469dea11448a inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad2d8677cb9862db3dbb3469dea11448a">更多...</a><br /></td></tr>
<tr class="separator:ad2d8677cb9862db3dbb3469dea11448a inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3755f9b861d4087c1b1bc1ab1bca1115 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a3755f9b861d4087c1b1bc1ab1bca1115">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a3755f9b861d4087c1b1bc1ab1bca1115 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a3755f9b861d4087c1b1bc1ab1bca1115">更多...</a><br /></td></tr>
<tr class="separator:a3755f9b861d4087c1b1bc1ab1bca1115 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ed1b43b1e139f916c4908ee4407a9a0 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a6ed1b43b1e139f916c4908ee4407a9a0">setEpsilon</a> (double eps)</td></tr>
<tr class="memdesc:a6ed1b43b1e139f916c4908ee4407a9a0 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the search epsilon precision (error bound) for nearest neighbors searches.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a6ed1b43b1e139f916c4908ee4407a9a0">更多...</a><br /></td></tr>
<tr class="separator:a6ed1b43b1e139f916c4908ee4407a9a0 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79537fd6e4e322a6cb3828aef64ab692 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a79537fd6e4e322a6cb3828aef64ab692"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a79537fd6e4e322a6cb3828aef64ab692">getEpsilon</a> () const</td></tr>
<tr class="memdesc:a79537fd6e4e322a6cb3828aef64ab692 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the search epsilon precision (error bound) for nearest neighbors searches. <br /></td></tr>
<tr class="separator:a79537fd6e4e322a6cb3828aef64ab692 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95a51d4834c204e02fd12b48d0c37a6f inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a95a51d4834c204e02fd12b48d0c37a6f">setResolution</a> (double resolution_arg)</td></tr>
<tr class="memdesc:a95a51d4834c204e02fd12b48d0c37a6f inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set/change the octree voxel resolution  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a95a51d4834c204e02fd12b48d0c37a6f">更多...</a><br /></td></tr>
<tr class="separator:a95a51d4834c204e02fd12b48d0c37a6f inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaeb6c759054a883ef7e709591d0be3e3 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aaeb6c759054a883ef7e709591d0be3e3">getResolution</a> () const</td></tr>
<tr class="memdesc:aaeb6c759054a883ef7e709591d0be3e3 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get octree voxel resolution  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#aaeb6c759054a883ef7e709591d0be3e3">更多...</a><br /></td></tr>
<tr class="separator:aaeb6c759054a883ef7e709591d0be3e3 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae99e636dcd717b62e78a4a12ba9f183f inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ae99e636dcd717b62e78a4a12ba9f183f">getTreeDepth</a> () const</td></tr>
<tr class="memdesc:ae99e636dcd717b62e78a4a12ba9f183f inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum depth of the octree.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ae99e636dcd717b62e78a4a12ba9f183f">更多...</a><br /></td></tr>
<tr class="separator:ae99e636dcd717b62e78a4a12ba9f183f inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac477d9477e781d980709b1e8886d2c7c inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ac477d9477e781d980709b1e8886d2c7c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ac477d9477e781d980709b1e8886d2c7c">addPointsFromInputCloud</a> ()</td></tr>
<tr class="memdesc:ac477d9477e781d980709b1e8886d2c7c inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add points from input point cloud to octree. <br /></td></tr>
<tr class="separator:ac477d9477e781d980709b1e8886d2c7c inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac740d5e678cca7d165771f0c9e480050 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ac740d5e678cca7d165771f0c9e480050">addPointFromCloud</a> (const int point_idx_arg, IndicesPtr indices_arg)</td></tr>
<tr class="memdesc:ac740d5e678cca7d165771f0c9e480050 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add point at given index from input point cloud to octree. Index will be also added to indices vector.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ac740d5e678cca7d165771f0c9e480050">更多...</a><br /></td></tr>
<tr class="separator:ac740d5e678cca7d165771f0c9e480050 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53d42efe80b3083dc5b703ea9dd7c9af inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a53d42efe80b3083dc5b703ea9dd7c9af">addPointToCloud</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_arg, PointCloudPtr cloud_arg)</td></tr>
<tr class="memdesc:a53d42efe80b3083dc5b703ea9dd7c9af inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add point simultaneously to octree and input point cloud.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a53d42efe80b3083dc5b703ea9dd7c9af">更多...</a><br /></td></tr>
<tr class="separator:a53d42efe80b3083dc5b703ea9dd7c9af inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa204be6055c6e686bbe2bb11ece439db inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa204be6055c6e686bbe2bb11ece439db">addPointToCloud</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_arg, PointCloudPtr cloud_arg, IndicesPtr indices_arg)</td></tr>
<tr class="memdesc:aa204be6055c6e686bbe2bb11ece439db inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add point simultaneously to octree and input point cloud. A corresponding index will be added to the indices vector.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa204be6055c6e686bbe2bb11ece439db">更多...</a><br /></td></tr>
<tr class="separator:aa204be6055c6e686bbe2bb11ece439db inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a2aff164921146fd82c192d73e2f155 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a9a2aff164921146fd82c192d73e2f155">isVoxelOccupiedAtPoint</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_arg) const</td></tr>
<tr class="memdesc:a9a2aff164921146fd82c192d73e2f155 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if voxel at given point exist.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a9a2aff164921146fd82c192d73e2f155">更多...</a><br /></td></tr>
<tr class="separator:a9a2aff164921146fd82c192d73e2f155 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93dbefe4a23e8083f6e3bba2eab22e0c inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a93dbefe4a23e8083f6e3bba2eab22e0c">isVoxelOccupiedAtPoint</a> (const double point_x_arg, const double point_y_arg, const double point_z_arg) const</td></tr>
<tr class="memdesc:a93dbefe4a23e8083f6e3bba2eab22e0c inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if voxel at given point coordinates exist.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a93dbefe4a23e8083f6e3bba2eab22e0c">更多...</a><br /></td></tr>
<tr class="separator:a93dbefe4a23e8083f6e3bba2eab22e0c inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75d0265301eeb2ba907cd1f2e002eca7 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a75d0265301eeb2ba907cd1f2e002eca7">isVoxelOccupiedAtPoint</a> (const int &amp;point_idx_arg) const</td></tr>
<tr class="memdesc:a75d0265301eeb2ba907cd1f2e002eca7 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if voxel at given point from input cloud exist.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a75d0265301eeb2ba907cd1f2e002eca7">更多...</a><br /></td></tr>
<tr class="separator:a75d0265301eeb2ba907cd1f2e002eca7 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2661ae14c070f3abca50c759d7c0c465 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a2661ae14c070f3abca50c759d7c0c465"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a2661ae14c070f3abca50c759d7c0c465">deleteTree</a> ()</td></tr>
<tr class="memdesc:a2661ae14c070f3abca50c759d7c0c465 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the octree structure and its leaf nodes. <br /></td></tr>
<tr class="separator:a2661ae14c070f3abca50c759d7c0c465 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb3e4301c89ea5011a1a1167800a57b3 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#abb3e4301c89ea5011a1a1167800a57b3">getOccupiedVoxelCenters</a> (AlignedPointTVector &amp;voxel_center_list_arg) const</td></tr>
<tr class="memdesc:abb3e4301c89ea5011a1a1167800a57b3 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a PointT vector of centers of all occupied voxels.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#abb3e4301c89ea5011a1a1167800a57b3">更多...</a><br /></td></tr>
<tr class="separator:abb3e4301c89ea5011a1a1167800a57b3 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2fe606c6ea7b413949b96e4ba4b22d7 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ac2fe606c6ea7b413949b96e4ba4b22d7">getApproxIntersectedVoxelCentersBySegment</a> (const Eigen::Vector3f &amp;origin, const Eigen::Vector3f &amp;end, AlignedPointTVector &amp;voxel_center_list, float precision=0.2)</td></tr>
<tr class="memdesc:ac2fe606c6ea7b413949b96e4ba4b22d7 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a PointT vector of centers of voxels intersected by a line segment. This returns a approximation of the actual intersected voxels by walking along the line with small steps. Voxels are ordered, from closest to furthest w.r.t. the origin.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ac2fe606c6ea7b413949b96e4ba4b22d7">更多...</a><br /></td></tr>
<tr class="separator:ac2fe606c6ea7b413949b96e4ba4b22d7 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2edc37d578faf79346d3fa74b18de194 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a2edc37d578faf79346d3fa74b18de194">deleteVoxelAtPoint</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_arg)</td></tr>
<tr class="memdesc:a2edc37d578faf79346d3fa74b18de194 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete leaf node / voxel at given point  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a2edc37d578faf79346d3fa74b18de194">更多...</a><br /></td></tr>
<tr class="separator:a2edc37d578faf79346d3fa74b18de194 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03616f25c07af456a3f96e87371f152e inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a03616f25c07af456a3f96e87371f152e">deleteVoxelAtPoint</a> (const int &amp;point_idx_arg)</td></tr>
<tr class="memdesc:a03616f25c07af456a3f96e87371f152e inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete leaf node / voxel at given point from input cloud  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a03616f25c07af456a3f96e87371f152e">更多...</a><br /></td></tr>
<tr class="separator:a03616f25c07af456a3f96e87371f152e inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bc46426ce1b55cfd0a32063ada08613 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a7bc46426ce1b55cfd0a32063ada08613"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a7bc46426ce1b55cfd0a32063ada08613">defineBoundingBox</a> ()</td></tr>
<tr class="memdesc:a7bc46426ce1b55cfd0a32063ada08613 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Investigate dimensions of pointcloud data set and define corresponding bounding box for octree. <br /></td></tr>
<tr class="separator:a7bc46426ce1b55cfd0a32063ada08613 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17efabbe9a60f396212030999b9019b4 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a17efabbe9a60f396212030999b9019b4">defineBoundingBox</a> (const double min_x_arg, const double min_y_arg, const double min_z_arg, const double max_x_arg, const double max_y_arg, const double max_z_arg)</td></tr>
<tr class="memdesc:a17efabbe9a60f396212030999b9019b4 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define bounding box for octree  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a17efabbe9a60f396212030999b9019b4">更多...</a><br /></td></tr>
<tr class="separator:a17efabbe9a60f396212030999b9019b4 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4b5da82dcdb17bfc47a7e727002a35d inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad4b5da82dcdb17bfc47a7e727002a35d">defineBoundingBox</a> (const double max_x_arg, const double max_y_arg, const double max_z_arg)</td></tr>
<tr class="memdesc:ad4b5da82dcdb17bfc47a7e727002a35d inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define bounding box for octree  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad4b5da82dcdb17bfc47a7e727002a35d">更多...</a><br /></td></tr>
<tr class="separator:ad4b5da82dcdb17bfc47a7e727002a35d inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab45d8debd181db309b2283ae22a27c58 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ab45d8debd181db309b2283ae22a27c58">defineBoundingBox</a> (const double cubeLen_arg)</td></tr>
<tr class="memdesc:ab45d8debd181db309b2283ae22a27c58 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define bounding box cube for octree  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ab45d8debd181db309b2283ae22a27c58">更多...</a><br /></td></tr>
<tr class="separator:ab45d8debd181db309b2283ae22a27c58 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc10f5df5244d371c4136f09b37cd685 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#adc10f5df5244d371c4136f09b37cd685">getBoundingBox</a> (double &amp;min_x_arg, double &amp;min_y_arg, double &amp;min_z_arg, double &amp;max_x_arg, double &amp;max_y_arg, double &amp;max_z_arg) const</td></tr>
<tr class="memdesc:adc10f5df5244d371c4136f09b37cd685 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get bounding box for octree  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#adc10f5df5244d371c4136f09b37cd685">更多...</a><br /></td></tr>
<tr class="separator:adc10f5df5244d371c4136f09b37cd685 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2c5e918883e8a4a4d4c9d017bff900c inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ab2c5e918883e8a4a4d4c9d017bff900c">getVoxelSquaredDiameter</a> (unsigned int tree_depth_arg) const</td></tr>
<tr class="memdesc:ab2c5e918883e8a4a4d4c9d017bff900c inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the squared diameter of a voxel at given tree depth  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ab2c5e918883e8a4a4d4c9d017bff900c">更多...</a><br /></td></tr>
<tr class="separator:ab2c5e918883e8a4a4d4c9d017bff900c inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a040db2cc8b3dcf73cdb4bea4fd37d53a inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a040db2cc8b3dcf73cdb4bea4fd37d53a">getVoxelSquaredDiameter</a> () const</td></tr>
<tr class="memdesc:a040db2cc8b3dcf73cdb4bea4fd37d53a inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the squared diameter of a voxel at leaf depth  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a040db2cc8b3dcf73cdb4bea4fd37d53a">更多...</a><br /></td></tr>
<tr class="separator:a040db2cc8b3dcf73cdb4bea4fd37d53a inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab16d0a5d8b0a383619e1d50d748b5e0f inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ab16d0a5d8b0a383619e1d50d748b5e0f">getVoxelSquaredSideLen</a> (unsigned int tree_depth_arg) const</td></tr>
<tr class="memdesc:ab16d0a5d8b0a383619e1d50d748b5e0f inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the squared voxel cube side length at given tree depth  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ab16d0a5d8b0a383619e1d50d748b5e0f">更多...</a><br /></td></tr>
<tr class="separator:ab16d0a5d8b0a383619e1d50d748b5e0f inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e56f5f63f8e230d71a4716f8c420ebf inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a8e56f5f63f8e230d71a4716f8c420ebf">getVoxelSquaredSideLen</a> () const</td></tr>
<tr class="memdesc:a8e56f5f63f8e230d71a4716f8c420ebf inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the squared voxel cube side length at leaf level  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a8e56f5f63f8e230d71a4716f8c420ebf">更多...</a><br /></td></tr>
<tr class="separator:a8e56f5f63f8e230d71a4716f8c420ebf inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad15791e2de5823745260f812b4c65e06 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad15791e2de5823745260f812b4c65e06">getVoxelBounds</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_iterator_base.html">OctreeIteratorBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a>&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a>, <a class="el" href="classpcl_1_1octree_1_1_octree_container_empty.html">OctreeContainerEmpty</a> &gt; &gt; &amp;iterator, Eigen::Vector3f &amp;min_pt, Eigen::Vector3f &amp;max_pt) const</td></tr>
<tr class="memdesc:ad15791e2de5823745260f812b4c65e06 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate bounds of the current voxel of an octree iterator  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad15791e2de5823745260f812b4c65e06">更多...</a><br /></td></tr>
<tr class="separator:ad15791e2de5823745260f812b4c65e06 inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a094e94679a5251f9da9b58169e51958e inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a094e94679a5251f9da9b58169e51958e">enableDynamicDepth</a> (size_t maxObjsPerLeaf)</td></tr>
<tr class="memdesc:a094e94679a5251f9da9b58169e51958e inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable dynamic octree structure  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a094e94679a5251f9da9b58169e51958e">更多...</a><br /></td></tr>
<tr class="separator:a094e94679a5251f9da9b58169e51958e inherit pub_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1octree_1_1_octree_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1octree_1_1_octree_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;</a></td></tr>
<tr class="memitem:af5b723353ed5e70c780ab51483e21fa3 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="af5b723353ed5e70c780ab51483e21fa3"></a>
<a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>begin</b> (unsigned int max_depth_arg=0)</td></tr>
<tr class="separator:af5b723353ed5e70c780ab51483e21fa3 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3dd39dddf230b39a2fc045ec103abb7 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="aa3dd39dddf230b39a2fc045ec103abb7"></a>
const <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
<tr class="separator:aa3dd39dddf230b39a2fc045ec103abb7 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8541db526ddf5f898790bf6ef1223a3a inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a8541db526ddf5f898790bf6ef1223a3a"></a>
<a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node_iterator.html">LeafNodeIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>leaf_begin</b> (unsigned int max_depth_arg=0)</td></tr>
<tr class="separator:a8541db526ddf5f898790bf6ef1223a3a inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e14d8fab1cfd74381c27aadf6d8b093 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a1e14d8fab1cfd74381c27aadf6d8b093"></a>
const <a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node_iterator.html">LeafNodeIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>leaf_end</b> ()</td></tr>
<tr class="separator:a1e14d8fab1cfd74381c27aadf6d8b093 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a760e175fb8bb86d79c56e93e8b595e8e inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a760e175fb8bb86d79c56e93e8b595e8e"></a>
<a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">DepthFirstIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>depth_begin</b> (unsigned int max_depth_arg=0)</td></tr>
<tr class="separator:a760e175fb8bb86d79c56e93e8b595e8e inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb2f5f162fc65bea502e16a4d440e3c3 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="aeb2f5f162fc65bea502e16a4d440e3c3"></a>
const <a class="el" href="classpcl_1_1octree_1_1_octree_depth_first_iterator.html">DepthFirstIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>depth_end</b> ()</td></tr>
<tr class="separator:aeb2f5f162fc65bea502e16a4d440e3c3 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c3b436b7b30f428312dcdcf37f54f9d inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a0c3b436b7b30f428312dcdcf37f54f9d"></a>
<a class="el" href="classpcl_1_1octree_1_1_octree_breadth_first_iterator.html">BreadthFirstIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>breadth_begin</b> (unsigned int max_depth_arg=0)</td></tr>
<tr class="separator:a0c3b436b7b30f428312dcdcf37f54f9d inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c6d18a296ed5f2667a4b6a511d46575 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a3c6d18a296ed5f2667a4b6a511d46575"></a>
const <a class="el" href="classpcl_1_1octree_1_1_octree_breadth_first_iterator.html">BreadthFirstIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>breadth_end</b> ()</td></tr>
<tr class="separator:a3c6d18a296ed5f2667a4b6a511d46575 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7fe4a307dc3c87adefb3bac2758a862 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="ae7fe4a307dc3c87adefb3bac2758a862"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#ae7fe4a307dc3c87adefb3bac2758a862">OctreeBase</a> ()</td></tr>
<tr class="memdesc:ae7fe4a307dc3c87adefb3bac2758a862 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:ae7fe4a307dc3c87adefb3bac2758a862 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad76bd21badf86e9b47d0c8689f6a860b inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="ad76bd21badf86e9b47d0c8689f6a860b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#ad76bd21badf86e9b47d0c8689f6a860b">OctreeBase</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a> &amp;source)</td></tr>
<tr class="memdesc:ad76bd21badf86e9b47d0c8689f6a860b inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:ad76bd21badf86e9b47d0c8689f6a860b inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3576546beaf804d801ca93c541d76697 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a3576546beaf804d801ca93c541d76697"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a3576546beaf804d801ca93c541d76697">~OctreeBase</a> ()</td></tr>
<tr class="memdesc:a3576546beaf804d801ca93c541d76697 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty deconstructor. <br /></td></tr>
<tr class="separator:a3576546beaf804d801ca93c541d76697 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae40b7560b7aaa1f70d95bc95e093601 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="aae40b7560b7aaa1f70d95bc95e093601"></a>
<a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#aae40b7560b7aaa1f70d95bc95e093601">operator=</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">OctreeBase</a> &amp;source)</td></tr>
<tr class="memdesc:aae40b7560b7aaa1f70d95bc95e093601 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy operator. <br /></td></tr>
<tr class="separator:aae40b7560b7aaa1f70d95bc95e093601 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b65a6dadccce46ef7c2434f80d907d7 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a2b65a6dadccce46ef7c2434f80d907d7">setMaxVoxelIndex</a> (unsigned int max_voxel_index_arg)</td></tr>
<tr class="memdesc:a2b65a6dadccce46ef7c2434f80d907d7 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum amount of voxels per dimension.  <a href="classpcl_1_1octree_1_1_octree_base.html#a2b65a6dadccce46ef7c2434f80d907d7">更多...</a><br /></td></tr>
<tr class="separator:a2b65a6dadccce46ef7c2434f80d907d7 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7de0fe2ec6f460d6e448b846318526b inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#af7de0fe2ec6f460d6e448b846318526b">setTreeDepth</a> (unsigned int max_depth_arg)</td></tr>
<tr class="memdesc:af7de0fe2ec6f460d6e448b846318526b inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum depth of the octree.  <a href="classpcl_1_1octree_1_1_octree_base.html#af7de0fe2ec6f460d6e448b846318526b">更多...</a><br /></td></tr>
<tr class="separator:af7de0fe2ec6f460d6e448b846318526b inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaedf340984f00bf088c8fac94fb176d7 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#aaedf340984f00bf088c8fac94fb176d7">getTreeDepth</a> () const</td></tr>
<tr class="memdesc:aaedf340984f00bf088c8fac94fb176d7 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum depth of the octree.  <a href="classpcl_1_1octree_1_1_octree_base.html#aaedf340984f00bf088c8fac94fb176d7">更多...</a><br /></td></tr>
<tr class="separator:aaedf340984f00bf088c8fac94fb176d7 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62ea5ae9440654d09b0db929675ed5da inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a62ea5ae9440654d09b0db929675ed5da">createLeaf</a> (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)</td></tr>
<tr class="memdesc:a62ea5ae9440654d09b0db929675ed5da inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create new leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).  <a href="classpcl_1_1octree_1_1_octree_base.html#a62ea5ae9440654d09b0db929675ed5da">更多...</a><br /></td></tr>
<tr class="separator:a62ea5ae9440654d09b0db929675ed5da inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cb31ab9a56944b96eef0ace8dedacbe inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a8cb31ab9a56944b96eef0ace8dedacbe">findLeaf</a> (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)</td></tr>
<tr class="memdesc:a8cb31ab9a56944b96eef0ace8dedacbe inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).  <a href="classpcl_1_1octree_1_1_octree_base.html#a8cb31ab9a56944b96eef0ace8dedacbe">更多...</a><br /></td></tr>
<tr class="separator:a8cb31ab9a56944b96eef0ace8dedacbe inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adde845dfa80aec70762f8297e2b2e97c inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#adde845dfa80aec70762f8297e2b2e97c">existLeaf</a> (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg) const</td></tr>
<tr class="memdesc:adde845dfa80aec70762f8297e2b2e97c inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">idx_x_arg for the existence of leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).  <a href="classpcl_1_1octree_1_1_octree_base.html#adde845dfa80aec70762f8297e2b2e97c">更多...</a><br /></td></tr>
<tr class="separator:adde845dfa80aec70762f8297e2b2e97c inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af316c0dedeb707141de115778016c969 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#af316c0dedeb707141de115778016c969">removeLeaf</a> (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)</td></tr>
<tr class="memdesc:af316c0dedeb707141de115778016c969 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).  <a href="classpcl_1_1octree_1_1_octree_base.html#af316c0dedeb707141de115778016c969">更多...</a><br /></td></tr>
<tr class="separator:af316c0dedeb707141de115778016c969 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2bed940d92096c56cb9efc08aee0af9 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#ac2bed940d92096c56cb9efc08aee0af9">getLeafCount</a> () const</td></tr>
<tr class="memdesc:ac2bed940d92096c56cb9efc08aee0af9 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the amount of existing leafs in the octree.  <a href="classpcl_1_1octree_1_1_octree_base.html#ac2bed940d92096c56cb9efc08aee0af9">更多...</a><br /></td></tr>
<tr class="separator:ac2bed940d92096c56cb9efc08aee0af9 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6969af4d54d7c8d41b16cc00579744d0 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a6969af4d54d7c8d41b16cc00579744d0">getBranchCount</a> () const</td></tr>
<tr class="memdesc:a6969af4d54d7c8d41b16cc00579744d0 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the amount of existing branch nodes in the octree.  <a href="classpcl_1_1octree_1_1_octree_base.html#a6969af4d54d7c8d41b16cc00579744d0">更多...</a><br /></td></tr>
<tr class="separator:a6969af4d54d7c8d41b16cc00579744d0 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9abc561a4c6672aba260f688c8250682 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a9abc561a4c6672aba260f688c8250682"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a9abc561a4c6672aba260f688c8250682">deleteTree</a> ()</td></tr>
<tr class="memdesc:a9abc561a4c6672aba260f688c8250682 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the octree structure and its leaf nodes. <br /></td></tr>
<tr class="separator:a9abc561a4c6672aba260f688c8250682 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0be9db52726ff7e1e58fd384e0f5e54 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#aa0be9db52726ff7e1e58fd384e0f5e54">serializeTree</a> (std::vector&lt; char &gt; &amp;binary_tree_out_arg)</td></tr>
<tr class="memdesc:aa0be9db52726ff7e1e58fd384e0f5e54 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize octree into a binary output vector describing its branch node structure.  <a href="classpcl_1_1octree_1_1_octree_base.html#aa0be9db52726ff7e1e58fd384e0f5e54">更多...</a><br /></td></tr>
<tr class="separator:aa0be9db52726ff7e1e58fd384e0f5e54 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e6c5b482d5280d7809b4a8484b77a5e inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a4e6c5b482d5280d7809b4a8484b77a5e">serializeTree</a> (std::vector&lt; char &gt; &amp;binary_tree_out_arg, std::vector&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> * &gt; &amp;leaf_container_vector_arg)</td></tr>
<tr class="memdesc:a4e6c5b482d5280d7809b4a8484b77a5e inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize octree into a binary output vector describing its branch node structure and push all LeafContainerT elements stored in the octree to a vector.  <a href="classpcl_1_1octree_1_1_octree_base.html#a4e6c5b482d5280d7809b4a8484b77a5e">更多...</a><br /></td></tr>
<tr class="separator:a4e6c5b482d5280d7809b4a8484b77a5e inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29a4753c659cdd7b27e7e83ad705c89c inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a29a4753c659cdd7b27e7e83ad705c89c">serializeLeafs</a> (std::vector&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> * &gt; &amp;leaf_container_vector_arg)</td></tr>
<tr class="memdesc:a29a4753c659cdd7b27e7e83ad705c89c inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Outputs a vector of all LeafContainerT elements that are stored within the octree leaf nodes.  <a href="classpcl_1_1octree_1_1_octree_base.html#a29a4753c659cdd7b27e7e83ad705c89c">更多...</a><br /></td></tr>
<tr class="separator:a29a4753c659cdd7b27e7e83ad705c89c inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fcd3895195eb4102f46d4d54826f554 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a7fcd3895195eb4102f46d4d54826f554">deserializeTree</a> (std::vector&lt; char &gt; &amp;binary_tree_input_arg)</td></tr>
<tr class="memdesc:a7fcd3895195eb4102f46d4d54826f554 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deserialize a binary octree description vector and create a corresponding octree structure. Leaf nodes are initialized with getDataTByKey(..).  <a href="classpcl_1_1octree_1_1_octree_base.html#a7fcd3895195eb4102f46d4d54826f554">更多...</a><br /></td></tr>
<tr class="separator:a7fcd3895195eb4102f46d4d54826f554 inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38698f38bee2f8748d20713b61f827db inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a38698f38bee2f8748d20713b61f827db">deserializeTree</a> (std::vector&lt; char &gt; &amp;binary_tree_input_arg, std::vector&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> * &gt; &amp;leaf_container_vector_arg)</td></tr>
<tr class="memdesc:a38698f38bee2f8748d20713b61f827db inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deserialize a binary octree description and create a corresponding octree structure. Leaf nodes are initialized with LeafContainerT elements from the dataVector.  <a href="classpcl_1_1octree_1_1_octree_base.html#a38698f38bee2f8748d20713b61f827db">更多...</a><br /></td></tr>
<tr class="separator:a38698f38bee2f8748d20713b61f827db inherit pub_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a9c6a211241668de62243825b1f95e76a"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c6a211241668de62243825b1f95e76a">pointSquaredDist</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_a, const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_b) const</td></tr>
<tr class="memdesc:a9c6a211241668de62243825b1f95e76a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper function to calculate the squared distance between two points  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c6a211241668de62243825b1f95e76a">更多...</a><br /></td></tr>
<tr class="separator:a9c6a211241668de62243825b1f95e76a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08c976a887a568daced02c11da5c75df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a08c976a887a568daced02c11da5c75df">getNeighborsWithinRadiusRecursive</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point, const double radiusSquared, const BranchNode *node, const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key, unsigned int tree_depth, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn) const</td></tr>
<tr class="memdesc:a08c976a887a568daced02c11da5c75df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursive search method that explores the octree and finds neighbors within a given radius  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a08c976a887a568daced02c11da5c75df">更多...</a><br /></td></tr>
<tr class="separator:a08c976a887a568daced02c11da5c75df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a907f077b8bcf8f7b85c0f181c9ac6fd8"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a907f077b8bcf8f7b85c0f181c9ac6fd8">getKNearestNeighborRecursive</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point, unsigned int K, const BranchNode *node, const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key, unsigned int tree_depth, const double squared_search_radius, std::vector&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search_1_1prio_point_queue_entry.html">prioPointQueueEntry</a> &gt; &amp;point_candidates) const</td></tr>
<tr class="memdesc:a907f077b8bcf8f7b85c0f181c9ac6fd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursive search method that explores the octree and finds the K nearest neighbors  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a907f077b8bcf8f7b85c0f181c9ac6fd8">更多...</a><br /></td></tr>
<tr class="separator:a907f077b8bcf8f7b85c0f181c9ac6fd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2361d272532234458d3a6a5d32fe0d01"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2361d272532234458d3a6a5d32fe0d01">approxNearestSearchRecursive</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point, const BranchNode *node, const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key, unsigned int tree_depth, int &amp;result_index, float &amp;sqr_distance)</td></tr>
<tr class="memdesc:a2361d272532234458d3a6a5d32fe0d01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursive search method that explores the octree and finds the approximate nearest neighbor  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2361d272532234458d3a6a5d32fe0d01">更多...</a><br /></td></tr>
<tr class="separator:a2361d272532234458d3a6a5d32fe0d01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a265cd3d276609bd215c98d7680976e47"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (double min_x, double min_y, double min_z, double max_x, double max_y, double max_z, unsigned char a, const <a class="el" href="classpcl_1_1octree_1_1_octree_node.html">OctreeNode</a> *node, const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key, AlignedPointTVector &amp;voxel_center_list, int max_voxel_count) const</td></tr>
<tr class="memdesc:a265cd3d276609bd215c98d7680976e47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively search the tree for all intersected leaf nodes and return a vector of voxel centers. This algorithm is based off the paper An Efficient Parametric Algorithm for Octree Traversal: <a href="http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf">http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf</a>  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">更多...</a><br /></td></tr>
<tr class="separator:a265cd3d276609bd215c98d7680976e47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4736506b85b403d53265661cdc637cbc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a4736506b85b403d53265661cdc637cbc">boxSearchRecursive</a> (const Eigen::Vector3f &amp;min_pt, const Eigen::Vector3f &amp;max_pt, const BranchNode *node, const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key, unsigned int tree_depth, std::vector&lt; int &gt; &amp;k_indices) const</td></tr>
<tr class="memdesc:a4736506b85b403d53265661cdc637cbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursive search method that explores the octree and finds points within a rectangular search area  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a4736506b85b403d53265661cdc637cbc">更多...</a><br /></td></tr>
<tr class="separator:a4736506b85b403d53265661cdc637cbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a722a3807b9e1ab10e7db5aeac79b001f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (double min_x, double min_y, double min_z, double max_x, double max_y, double max_z, unsigned char a, const <a class="el" href="classpcl_1_1octree_1_1_octree_node.html">OctreeNode</a> *node, const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key, std::vector&lt; int &gt; &amp;k_indices, int max_voxel_count) const</td></tr>
<tr class="memdesc:a722a3807b9e1ab10e7db5aeac79b001f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively search the tree for all intersected leaf nodes and return a vector of indices. This algorithm is based off the paper An Efficient Parametric Algorithm for Octree Traversal: <a href="http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf">http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf</a>  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">更多...</a><br /></td></tr>
<tr class="separator:a722a3807b9e1ab10e7db5aeac79b001f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c2837512d584123a6cdf26123feec99"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c2837512d584123a6cdf26123feec99">initIntersectedVoxel</a> (Eigen::Vector3f &amp;origin, Eigen::Vector3f &amp;direction, double &amp;min_x, double &amp;min_y, double &amp;min_z, double &amp;max_x, double &amp;max_y, double &amp;max_z, unsigned char &amp;a) const</td></tr>
<tr class="memdesc:a9c2837512d584123a6cdf26123feec99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize raytracing algorithm  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c2837512d584123a6cdf26123feec99">更多...</a><br /></td></tr>
<tr class="separator:a9c2837512d584123a6cdf26123feec99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3dcc9a1781a9d8bb73b5ea1a6425709"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#ad3dcc9a1781a9d8bb73b5ea1a6425709">getFirstIntersectedNode</a> (double min_x, double min_y, double min_z, double mid_x, double mid_y, double mid_z) const</td></tr>
<tr class="memdesc:ad3dcc9a1781a9d8bb73b5ea1a6425709"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find first child node ray will enter  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#ad3dcc9a1781a9d8bb73b5ea1a6425709">更多...</a><br /></td></tr>
<tr class="separator:ad3dcc9a1781a9d8bb73b5ea1a6425709"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27ee200992e4fced45f27e3d138e5b6f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (double x, double y, double z, int a, int b, int c) const</td></tr>
<tr class="memdesc:a27ee200992e4fced45f27e3d138e5b6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the next visited node given the current node upper bounding box corner. This function accepts three float values, and three int values. The function returns the ith integer where the ith float value is the minimum of the three float values.  <a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">更多...</a><br /></td></tr>
<tr class="separator:a27ee200992e4fced45f27e3d138e5b6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1octree_1_1_octree_point_cloud')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;</a></td></tr>
<tr class="memitem:a8a1dcd695db20c10dd2ca049b3e6851e inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a8a1dcd695db20c10dd2ca049b3e6851e">addPointIdx</a> (const int point_idx_arg)</td></tr>
<tr class="memdesc:a8a1dcd695db20c10dd2ca049b3e6851e inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add point at index from input pointcloud dataset to octree  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a8a1dcd695db20c10dd2ca049b3e6851e">更多...</a><br /></td></tr>
<tr class="separator:a8a1dcd695db20c10dd2ca049b3e6851e inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0504486d59659d8fe44257c2e46e159c inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a0504486d59659d8fe44257c2e46e159c">expandLeafNode</a> (<a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node.html">LeafNode</a> *leaf_node, <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *parent_branch, unsigned char child_idx, unsigned int depth_mask)</td></tr>
<tr class="memdesc:a0504486d59659d8fe44257c2e46e159c inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add point at index from input pointcloud dataset to octree  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a0504486d59659d8fe44257c2e46e159c">更多...</a><br /></td></tr>
<tr class="separator:a0504486d59659d8fe44257c2e46e159c inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa78eb05816a966b24bc939a6cfc625d3 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">getPointByIndex</a> (const unsigned int index_arg) const</td></tr>
<tr class="memdesc:aa78eb05816a966b24bc939a6cfc625d3 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get point at index from input pointcloud dataset  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">更多...</a><br /></td></tr>
<tr class="separator:aa78eb05816a966b24bc939a6cfc625d3 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a239ceacc6b608865fe053f26a1d5d6b6 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a239ceacc6b608865fe053f26a1d5d6b6">findLeafAtPoint</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_arg) const</td></tr>
<tr class="memdesc:a239ceacc6b608865fe053f26a1d5d6b6 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find octree leaf node at a given point  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a239ceacc6b608865fe053f26a1d5d6b6">更多...</a><br /></td></tr>
<tr class="separator:a239ceacc6b608865fe053f26a1d5d6b6 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0cbfcff86b8b2d544d98ffa4648d790 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="af0cbfcff86b8b2d544d98ffa4648d790"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#af0cbfcff86b8b2d544d98ffa4648d790">getKeyBitSize</a> ()</td></tr>
<tr class="memdesc:af0cbfcff86b8b2d544d98ffa4648d790 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define octree key setting and octree depth based on defined bounding box. <br /></td></tr>
<tr class="separator:af0cbfcff86b8b2d544d98ffa4648d790 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fd10260bace75f9c753ef42f74f9027 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a0fd10260bace75f9c753ef42f74f9027">adoptBoundingBoxToPoint</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_idx_arg)</td></tr>
<tr class="memdesc:a0fd10260bace75f9c753ef42f74f9027 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Grow the bounding box/octree until point fits  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a0fd10260bace75f9c753ef42f74f9027">更多...</a><br /></td></tr>
<tr class="separator:a0fd10260bace75f9c753ef42f74f9027 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f377d439e78370a536d0fffd7c6a2a2 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a0f377d439e78370a536d0fffd7c6a2a2">isPointWithinBoundingBox</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_idx_arg) const</td></tr>
<tr class="memdesc:a0f377d439e78370a536d0fffd7c6a2a2 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if given point is within the bounding box of the octree  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a0f377d439e78370a536d0fffd7c6a2a2">更多...</a><br /></td></tr>
<tr class="separator:a0f377d439e78370a536d0fffd7c6a2a2 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad34b5c6655fdcf9ed4da21ac8a973e5f inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad34b5c6655fdcf9ed4da21ac8a973e5f">genOctreeKeyforPoint</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg) const</td></tr>
<tr class="memdesc:ad34b5c6655fdcf9ed4da21ac8a973e5f inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate octree key for voxel at a given point  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad34b5c6655fdcf9ed4da21ac8a973e5f">更多...</a><br /></td></tr>
<tr class="separator:ad34b5c6655fdcf9ed4da21ac8a973e5f inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0b9d5d8a304091f8b0e80f8bd76272e inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ab0b9d5d8a304091f8b0e80f8bd76272e">genOctreeKeyforPoint</a> (const double point_x_arg, const double point_y_arg, const double point_z_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg) const</td></tr>
<tr class="memdesc:ab0b9d5d8a304091f8b0e80f8bd76272e inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate octree key for voxel at a given point  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ab0b9d5d8a304091f8b0e80f8bd76272e">更多...</a><br /></td></tr>
<tr class="separator:ab0b9d5d8a304091f8b0e80f8bd76272e inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdabd2a68b1a3b73580e84269f155fad inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#afdabd2a68b1a3b73580e84269f155fad">genOctreeKeyForDataT</a> (const int &amp;data_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg) const</td></tr>
<tr class="memdesc:afdabd2a68b1a3b73580e84269f155fad inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual method for generating octree key for a given point index.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#afdabd2a68b1a3b73580e84269f155fad">更多...</a><br /></td></tr>
<tr class="separator:afdabd2a68b1a3b73580e84269f155fad inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a342788d493c7a2520009179a0e321d7b inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a342788d493c7a2520009179a0e321d7b">genLeafNodeCenterFromOctreeKey</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_arg) const</td></tr>
<tr class="memdesc:a342788d493c7a2520009179a0e321d7b inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a point at center of leaf node voxel  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a342788d493c7a2520009179a0e321d7b">更多...</a><br /></td></tr>
<tr class="separator:a342788d493c7a2520009179a0e321d7b inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bea8ca3b8fe7b5c28bce6ca0d636789 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a6bea8ca3b8fe7b5c28bce6ca0d636789">genVoxelCenterFromOctreeKey</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg, unsigned int tree_depth_arg, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point_arg) const</td></tr>
<tr class="memdesc:a6bea8ca3b8fe7b5c28bce6ca0d636789 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a point at center of octree voxel at given tree level  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a6bea8ca3b8fe7b5c28bce6ca0d636789">更多...</a><br /></td></tr>
<tr class="separator:a6bea8ca3b8fe7b5c28bce6ca0d636789 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac63353c886559f6f801acb39147978a6 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ac63353c886559f6f801acb39147978a6">genVoxelBoundsFromOctreeKey</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg, unsigned int tree_depth_arg, Eigen::Vector3f &amp;min_pt, Eigen::Vector3f &amp;max_pt) const</td></tr>
<tr class="memdesc:ac63353c886559f6f801acb39147978a6 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate bounds of an octree voxel using octree key and tree depth arguments  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ac63353c886559f6f801acb39147978a6">更多...</a><br /></td></tr>
<tr class="separator:ac63353c886559f6f801acb39147978a6 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31091b92e65251fcb6c19b5f99215151 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a31091b92e65251fcb6c19b5f99215151">getOccupiedVoxelCentersRecursive</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *node_arg, const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg, AlignedPointTVector &amp;voxel_center_list_arg) const</td></tr>
<tr class="memdesc:a31091b92e65251fcb6c19b5f99215151 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively search the tree for all leaf nodes and return a vector of voxel centers.  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a31091b92e65251fcb6c19b5f99215151">更多...</a><br /></td></tr>
<tr class="separator:a31091b92e65251fcb6c19b5f99215151 inherit pro_methods_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1octree_1_1_octree_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1octree_1_1_octree_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;</a></td></tr>
<tr class="memitem:a9bb6a5ef1f56528bf949e4c3e9b3dcdc inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a9bb6a5ef1f56528bf949e4c3e9b3dcdc">createLeaf</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg)</td></tr>
<tr class="memdesc:a9bb6a5ef1f56528bf949e4c3e9b3dcdc inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a leaf node  <a href="classpcl_1_1octree_1_1_octree_base.html#a9bb6a5ef1f56528bf949e4c3e9b3dcdc">更多...</a><br /></td></tr>
<tr class="separator:a9bb6a5ef1f56528bf949e4c3e9b3dcdc inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08e5792b29cd493d54ba400a23505b40 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a08e5792b29cd493d54ba400a23505b40">findLeaf</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg) const</td></tr>
<tr class="memdesc:a08e5792b29cd493d54ba400a23505b40 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find leaf node  <a href="classpcl_1_1octree_1_1_octree_base.html#a08e5792b29cd493d54ba400a23505b40">更多...</a><br /></td></tr>
<tr class="separator:a08e5792b29cd493d54ba400a23505b40 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae54aebbcf08f825f5426fc1f6f66e0b2 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#ae54aebbcf08f825f5426fc1f6f66e0b2">existLeaf</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg) const</td></tr>
<tr class="memdesc:ae54aebbcf08f825f5426fc1f6f66e0b2 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for existance of a leaf node in the octree  <a href="classpcl_1_1octree_1_1_octree_base.html#ae54aebbcf08f825f5426fc1f6f66e0b2">更多...</a><br /></td></tr>
<tr class="separator:ae54aebbcf08f825f5426fc1f6f66e0b2 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fc084486bee5e49223e52b5ea1a40c8 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a4fc084486bee5e49223e52b5ea1a40c8">removeLeaf</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg)</td></tr>
<tr class="memdesc:a4fc084486bee5e49223e52b5ea1a40c8 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove leaf node from octree  <a href="classpcl_1_1octree_1_1_octree_base.html#a4fc084486bee5e49223e52b5ea1a40c8">更多...</a><br /></td></tr>
<tr class="separator:a4fc084486bee5e49223e52b5ea1a40c8 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd59f91dbfa1671c2d1e37e04712b286 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="acd59f91dbfa1671c2d1e37e04712b286"></a>
<a class="el" href="classpcl_1_1octree_1_1_octree_node.html">OctreeNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#acd59f91dbfa1671c2d1e37e04712b286">getRootNode</a> () const</td></tr>
<tr class="memdesc:acd59f91dbfa1671c2d1e37e04712b286 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve root node <br /></td></tr>
<tr class="separator:acd59f91dbfa1671c2d1e37e04712b286 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39c116718d47fb0086ff94117551fc1d inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a39c116718d47fb0086ff94117551fc1d">branchHasChild</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> &amp;branch_arg, unsigned char child_idx_arg) const</td></tr>
<tr class="memdesc:a39c116718d47fb0086ff94117551fc1d inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if branch is pointing to a particular child node  <a href="classpcl_1_1octree_1_1_octree_base.html#a39c116718d47fb0086ff94117551fc1d">更多...</a><br /></td></tr>
<tr class="separator:a39c116718d47fb0086ff94117551fc1d inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a4721b246ca10cb45f130835e6e5f5b inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1octree_1_1_octree_node.html">OctreeNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a9a4721b246ca10cb45f130835e6e5f5b">getBranchChildPtr</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> &amp;branch_arg, unsigned char child_idx_arg) const</td></tr>
<tr class="memdesc:a9a4721b246ca10cb45f130835e6e5f5b inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a child node pointer for child node at child_idx.  <a href="classpcl_1_1octree_1_1_octree_base.html#a9a4721b246ca10cb45f130835e6e5f5b">更多...</a><br /></td></tr>
<tr class="separator:a9a4721b246ca10cb45f130835e6e5f5b inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61d7ddd454369c5e23054bb1cdadc540 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a61d7ddd454369c5e23054bb1cdadc540">setBranchChildPtr</a> (<a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> &amp;branch_arg, unsigned char child_idx_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_node.html">OctreeNode</a> *new_child_arg)</td></tr>
<tr class="memdesc:a61d7ddd454369c5e23054bb1cdadc540 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assign new child node to branch  <a href="classpcl_1_1octree_1_1_octree_base.html#a61d7ddd454369c5e23054bb1cdadc540">更多...</a><br /></td></tr>
<tr class="separator:a61d7ddd454369c5e23054bb1cdadc540 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe9d23b2322f32b2ee26c1d9c02dcea3 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#abe9d23b2322f32b2ee26c1d9c02dcea3">getBranchBitPattern</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> &amp;branch_arg) const</td></tr>
<tr class="memdesc:abe9d23b2322f32b2ee26c1d9c02dcea3 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate bit pattern reflecting the existence of child node pointers  <a href="classpcl_1_1octree_1_1_octree_base.html#abe9d23b2322f32b2ee26c1d9c02dcea3">更多...</a><br /></td></tr>
<tr class="separator:abe9d23b2322f32b2ee26c1d9c02dcea3 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb95bc5e61e5c7c5e80030be0fda5997 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#aeb95bc5e61e5c7c5e80030be0fda5997">deleteBranchChild</a> (<a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> &amp;branch_arg, unsigned char child_idx_arg)</td></tr>
<tr class="memdesc:aeb95bc5e61e5c7c5e80030be0fda5997 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete child node and all its subchilds from octree  <a href="classpcl_1_1octree_1_1_octree_base.html#aeb95bc5e61e5c7c5e80030be0fda5997">更多...</a><br /></td></tr>
<tr class="separator:aeb95bc5e61e5c7c5e80030be0fda5997 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4766cdedf01eac19a565648b372dac93 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a4766cdedf01eac19a565648b372dac93">deleteBranch</a> (<a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> &amp;branch_arg)</td></tr>
<tr class="memdesc:a4766cdedf01eac19a565648b372dac93 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete branch and all its subchilds from octree  <a href="classpcl_1_1octree_1_1_octree_base.html#a4766cdedf01eac19a565648b372dac93">更多...</a><br /></td></tr>
<tr class="separator:a4766cdedf01eac19a565648b372dac93 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cec91269a5138bf75973e866015c660 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a2cec91269a5138bf75973e866015c660">createBranchChild</a> (<a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> &amp;branch_arg, unsigned char child_idx_arg)</td></tr>
<tr class="memdesc:a2cec91269a5138bf75973e866015c660 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and add a new branch child to a branch class  <a href="classpcl_1_1octree_1_1_octree_base.html#a2cec91269a5138bf75973e866015c660">更多...</a><br /></td></tr>
<tr class="separator:a2cec91269a5138bf75973e866015c660 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afca846cfd2002a905d1304bf663394f0 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node.html">LeafNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#afca846cfd2002a905d1304bf663394f0">createLeafChild</a> (<a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> &amp;branch_arg, unsigned char child_idx_arg)</td></tr>
<tr class="memdesc:afca846cfd2002a905d1304bf663394f0 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create and add a new leaf child to a branch class  <a href="classpcl_1_1octree_1_1_octree_base.html#afca846cfd2002a905d1304bf663394f0">更多...</a><br /></td></tr>
<tr class="separator:afca846cfd2002a905d1304bf663394f0 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a441fbe7d3df743a9e13be569c9620c55 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a441fbe7d3df743a9e13be569c9620c55">createLeafRecursive</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg, unsigned int depth_mask_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *branch_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_leaf_node.html">LeafNode</a> *&amp;return_leaf_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *&amp;parent_of_leaf_arg)</td></tr>
<tr class="memdesc:a441fbe7d3df743a9e13be569c9620c55 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a leaf node at octree key. If leaf node does already exist, it is returned.  <a href="classpcl_1_1octree_1_1_octree_base.html#a441fbe7d3df743a9e13be569c9620c55">更多...</a><br /></td></tr>
<tr class="separator:a441fbe7d3df743a9e13be569c9620c55 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3f8693893b6ee4925cf082716a607ed inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#ab3f8693893b6ee4925cf082716a607ed">findLeafRecursive</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg, unsigned int depth_mask_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *branch_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> *&amp;result_arg) const</td></tr>
<tr class="memdesc:ab3f8693893b6ee4925cf082716a607ed inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively search for a given leaf node and return a pointer.  <a href="classpcl_1_1octree_1_1_octree_base.html#ab3f8693893b6ee4925cf082716a607ed">更多...</a><br /></td></tr>
<tr class="separator:ab3f8693893b6ee4925cf082716a607ed inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6304cd86b4c714e949c68c328f10e8c6 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a6304cd86b4c714e949c68c328f10e8c6">deleteLeafRecursive</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg, unsigned int depth_mask_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *branch_arg)</td></tr>
<tr class="memdesc:a6304cd86b4c714e949c68c328f10e8c6 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively search and delete leaf node  <a href="classpcl_1_1octree_1_1_octree_base.html#a6304cd86b4c714e949c68c328f10e8c6">更多...</a><br /></td></tr>
<tr class="separator:a6304cd86b4c714e949c68c328f10e8c6 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9fdbf009e279243a3a1cd99caec05db inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#ab9fdbf009e279243a3a1cd99caec05db">serializeTreeRecursive</a> (const <a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *branch_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg, std::vector&lt; char &gt; *binary_tree_out_arg, typename std::vector&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> * &gt; *leaf_container_vector_arg) const</td></tr>
<tr class="memdesc:ab9fdbf009e279243a3a1cd99caec05db inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively explore the octree and output binary octree description together with a vector of leaf node LeafContainerTs.  <a href="classpcl_1_1octree_1_1_octree_base.html#ab9fdbf009e279243a3a1cd99caec05db">更多...</a><br /></td></tr>
<tr class="separator:ab9fdbf009e279243a3a1cd99caec05db inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1530f19c68fa7fed82198f1444b7b114 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a1530f19c68fa7fed82198f1444b7b114">deserializeTreeRecursive</a> (<a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *branch_arg, unsigned int depth_mask_arg, <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;key_arg, typename std::vector&lt; char &gt;::const_iterator &amp;binary_tree_input_it_arg, typename std::vector&lt; char &gt;::const_iterator &amp;binary_tree_input_it_end_arg, typename std::vector&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> * &gt;::const_iterator *leaf_container_vector_it_arg, typename std::vector&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> * &gt;::const_iterator *leaf_container_vector_it_end_arg)</td></tr>
<tr class="memdesc:a1530f19c68fa7fed82198f1444b7b114 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursive method for deserializing octree structure  <a href="classpcl_1_1octree_1_1_octree_base.html#a1530f19c68fa7fed82198f1444b7b114">更多...</a><br /></td></tr>
<tr class="separator:a1530f19c68fa7fed82198f1444b7b114 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0822f6b8272dfe619009873bba7a1211 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a0822f6b8272dfe619009873bba7a1211"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a0822f6b8272dfe619009873bba7a1211">serializeTreeCallback</a> (<a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> &amp;, const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;) const</td></tr>
<tr class="memdesc:a0822f6b8272dfe619009873bba7a1211 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback executed for every leaf node during serialization <br /></td></tr>
<tr class="separator:a0822f6b8272dfe619009873bba7a1211 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afac6e5f2cf2e95a27b4a529275e7ba7e inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="afac6e5f2cf2e95a27b4a529275e7ba7e"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#afac6e5f2cf2e95a27b4a529275e7ba7e">deserializeTreeCallback</a> (<a class="el" href="classpcl_1_1octree_1_1_octree_container_point_indices.html">OctreeContainerPointIndices</a> &amp;, const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;)</td></tr>
<tr class="memdesc:afac6e5f2cf2e95a27b4a529275e7ba7e inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback executed for every leaf node during deserialization <br /></td></tr>
<tr class="separator:afac6e5f2cf2e95a27b4a529275e7ba7e inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84f6098ca21b73b3cf13ca2596238326 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a84f6098ca21b73b3cf13ca2596238326">Log2</a> (double n_arg)</td></tr>
<tr class="memdesc:a84f6098ca21b73b3cf13ca2596238326 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper function to calculate the binary logarithm  <a href="classpcl_1_1octree_1_1_octree_base.html#a84f6098ca21b73b3cf13ca2596238326">更多...</a><br /></td></tr>
<tr class="separator:a84f6098ca21b73b3cf13ca2596238326 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cf92b5f2a5b59e679c12aab3dd276d6 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a4cf92b5f2a5b59e679c12aab3dd276d6">octreeCanResize</a> ()</td></tr>
<tr class="memdesc:a4cf92b5f2a5b59e679c12aab3dd276d6 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if octree is able to dynamically change its depth. This is required for adaptive bounding box adjustment.  <a href="classpcl_1_1octree_1_1_octree_base.html#a4cf92b5f2a5b59e679c12aab3dd276d6">更多...</a><br /></td></tr>
<tr class="separator:a4cf92b5f2a5b59e679c12aab3dd276d6 inherit pro_methods_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;</a></td></tr>
<tr class="memitem:a30c6002f19ebee3e5af733499254e2e3 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a30c6002f19ebee3e5af733499254e2e3"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a30c6002f19ebee3e5af733499254e2e3">input_</a></td></tr>
<tr class="memdesc:a30c6002f19ebee3e5af733499254e2e3 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to input point cloud dataset. <br /></td></tr>
<tr class="separator:a30c6002f19ebee3e5af733499254e2e3 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fe0eb5fad27c0b3a615f9f6d372a82b inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a4fe0eb5fad27c0b3a615f9f6d372a82b"></a>
IndicesConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a4fe0eb5fad27c0b3a615f9f6d372a82b">indices_</a></td></tr>
<tr class="memdesc:a4fe0eb5fad27c0b3a615f9f6d372a82b inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:a4fe0eb5fad27c0b3a615f9f6d372a82b inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9abbf2b0fedf04240be251def82a5b4 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="aa9abbf2b0fedf04240be251def82a5b4"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa9abbf2b0fedf04240be251def82a5b4">epsilon_</a></td></tr>
<tr class="memdesc:aa9abbf2b0fedf04240be251def82a5b4 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Epsilon precision (error bound) for nearest neighbors searches. <br /></td></tr>
<tr class="separator:aa9abbf2b0fedf04240be251def82a5b4 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada3e26017a2b5298846bcdd989feea98 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ada3e26017a2b5298846bcdd989feea98"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ada3e26017a2b5298846bcdd989feea98">resolution_</a></td></tr>
<tr class="memdesc:ada3e26017a2b5298846bcdd989feea98 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Octree resolution. <br /></td></tr>
<tr class="separator:ada3e26017a2b5298846bcdd989feea98 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dc33f2b512bad01de17e599f8279877 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a8dc33f2b512bad01de17e599f8279877"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>min_x_</b></td></tr>
<tr class="separator:a8dc33f2b512bad01de17e599f8279877 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae15a12d2a28bb61dfee5b336ccc636f0 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ae15a12d2a28bb61dfee5b336ccc636f0"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>max_x_</b></td></tr>
<tr class="separator:ae15a12d2a28bb61dfee5b336ccc636f0 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c861f8af5a5a447af53be9763784c1 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a01c861f8af5a5a447af53be9763784c1"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>min_y_</b></td></tr>
<tr class="separator:a01c861f8af5a5a447af53be9763784c1 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a464b7adba4e590273e14858b44156000 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a464b7adba4e590273e14858b44156000"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>max_y_</b></td></tr>
<tr class="separator:a464b7adba4e590273e14858b44156000 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4968dfe99e33fd95718a92626a7ec89 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="ad4968dfe99e33fd95718a92626a7ec89"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>min_z_</b></td></tr>
<tr class="separator:ad4968dfe99e33fd95718a92626a7ec89 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08b309d509bac1ec31f0e0688877cee1 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a08b309d509bac1ec31f0e0688877cee1"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>max_z_</b></td></tr>
<tr class="separator:a08b309d509bac1ec31f0e0688877cee1 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71a8a024259c75f6365f262308af7d57 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top"><a id="a71a8a024259c75f6365f262308af7d57"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a71a8a024259c75f6365f262308af7d57">bounding_box_defined_</a></td></tr>
<tr class="memdesc:a71a8a024259c75f6365f262308af7d57 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag indicating if octree has defined bounding box. <br /></td></tr>
<tr class="separator:a71a8a024259c75f6365f262308af7d57 inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a773a82c7c07e654e80bdca09f2fb9c inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a2a773a82c7c07e654e80bdca09f2fb9c">max_objs_per_leaf_</a></td></tr>
<tr class="memdesc:a2a773a82c7c07e654e80bdca09f2fb9c inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="mdescLeft">&#160;</td><td class="mdescRight">Amount of DataT objects per leafNode before expanding branch  <a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a2a773a82c7c07e654e80bdca09f2fb9c">更多...</a><br /></td></tr>
<tr class="separator:a2a773a82c7c07e654e80bdca09f2fb9c inherit pro_attribs_classpcl_1_1octree_1_1_octree_point_cloud"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1octree_1_1_octree_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1octree_1_1_octree_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1octree_1_1_octree_base.html">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;</a></td></tr>
<tr class="memitem:a2a74d829fa6bc41a9823e42b9bbb5e59 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a2a74d829fa6bc41a9823e42b9bbb5e59"></a>
std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a2a74d829fa6bc41a9823e42b9bbb5e59">leaf_count_</a></td></tr>
<tr class="memdesc:a2a74d829fa6bc41a9823e42b9bbb5e59 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Amount of leaf nodes <br  />
 <br /></td></tr>
<tr class="separator:a2a74d829fa6bc41a9823e42b9bbb5e59 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a554d101328545d88304af3d817fb4f19 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a554d101328545d88304af3d817fb4f19"></a>
std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a554d101328545d88304af3d817fb4f19">branch_count_</a></td></tr>
<tr class="memdesc:a554d101328545d88304af3d817fb4f19 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Amount of branch nodes <br  />
 <br /></td></tr>
<tr class="separator:a554d101328545d88304af3d817fb4f19 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ea6c9036575ec8e55ae59938036478a inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a2ea6c9036575ec8e55ae59938036478a"></a>
<a class="el" href="classpcl_1_1octree_1_1_octree_branch_node.html">BranchNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a2ea6c9036575ec8e55ae59938036478a">root_node_</a></td></tr>
<tr class="memdesc:a2ea6c9036575ec8e55ae59938036478a inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to root branch node of octree <br  />
 <br /></td></tr>
<tr class="separator:a2ea6c9036575ec8e55ae59938036478a inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af37a3e55a658f428b6190dcdcec28b89 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="af37a3e55a658f428b6190dcdcec28b89"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#af37a3e55a658f428b6190dcdcec28b89">depth_mask_</a></td></tr>
<tr class="memdesc:af37a3e55a658f428b6190dcdcec28b89 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Depth mask based on octree depth <br  />
 <br /></td></tr>
<tr class="separator:af37a3e55a658f428b6190dcdcec28b89 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2727267eed42ae776bbd8ea84b91187d inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a2727267eed42ae776bbd8ea84b91187d"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a2727267eed42ae776bbd8ea84b91187d">octree_depth_</a></td></tr>
<tr class="memdesc:a2727267eed42ae776bbd8ea84b91187d inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Octree depth <br /></td></tr>
<tr class="separator:a2727267eed42ae776bbd8ea84b91187d inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6044a82930ab95b427828ff022e7d1e3 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="a6044a82930ab95b427828ff022e7d1e3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#a6044a82930ab95b427828ff022e7d1e3">dynamic_depth_enabled_</a></td></tr>
<tr class="memdesc:a6044a82930ab95b427828ff022e7d1e3 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable dynamic_depth <br /></td></tr>
<tr class="separator:a6044a82930ab95b427828ff022e7d1e3 inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae03f7feba50b4bca74c8a6aeba9aba3c inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memItemLeft" align="right" valign="top"><a id="ae03f7feba50b4bca74c8a6aeba9aba3c"></a>
<a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1octree_1_1_octree_base.html#ae03f7feba50b4bca74c8a6aeba9aba3c">max_key_</a></td></tr>
<tr class="memdesc:ae03f7feba50b4bca74c8a6aeba9aba3c inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">key range <br /></td></tr>
<tr class="separator:ae03f7feba50b4bca74c8a6aeba9aba3c inherit pro_attribs_classpcl_1_1octree_1_1_octree_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty&gt;<br />
class pcl::octree::OctreePointCloudSearch&lt; PointT, LeafContainerT, BranchContainerT &gt;</h3>

<p><b>Octree</b> pointcloud search class </p>
<dl class="section note"><dt>注解</dt><dd>This class provides several methods for spatial neighbor search based on octree structure </dd>
<dd>
typename: PointT: type of point used in pointcloud</dd></dl>
<dl class="section author"><dt>作者</dt><dd>Julius Kammerl (<a href="#" onclick="location.href='mai'+'lto:'+'jul'+'iu'+'s@k'+'am'+'mer'+'l.'+'de'; return false;">juliu<span style="display: none;">.nosp@m.</span>s@ka<span style="display: none;">.nosp@m.</span>mmerl<span style="display: none;">.nosp@m.</span>.de</a>) </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="adb3b8d2c1fa8f5548de1a4c3f4b8af2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb3b8d2c1fa8f5548de1a4c3f4b8af2c">&#9670;&nbsp;</a></span>OctreePointCloudSearch()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT  = OctreeContainerPointIndices, typename BranchContainerT  = OctreeContainerEmpty&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::<a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">OctreePointCloudSearch</a> </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>resolution</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">resolution</td><td>octree resolution at lowest octree level </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;                                                         :</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;          OctreePointCloud&lt;PointT, LeafContainerT, BranchContainerT&gt; (resolution)</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        {</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="a76f66f61c1561a260c9dfd7a91bce860"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76f66f61c1561a260c9dfd7a91bce860">&#9670;&nbsp;</a></span>approxNearestSearch() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT  = OctreeContainerPointIndices, typename BranchContainerT  = OctreeContainerEmpty&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::approxNearestSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>query_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>result_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>sqr_distance</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Search for approx. nearest neighbor at the query point. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the point cloud data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">query_index</td><td>the index in <em>cloud</em> representing the query point </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">result_index</td><td>the resultant index of the neighbor point </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">sqr_distance</td><td>the resultant squared distance to the neighboring point </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found </dd></dl>
<div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        {</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a76f66f61c1561a260c9dfd7a91bce860">approxNearestSearch</a> (cloud.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>[query_index], result_index, sqr_distance));</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_af16a62638198313b9c093127c492c884"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">pcl::PointCloud::points</a></div><div class="ttdeci">std::vector&lt; PointT, Eigen::aligned_allocator&lt; PointT &gt; &gt; points</div><div class="ttdoc">The point data.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:410</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a76f66f61c1561a260c9dfd7a91bce860"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a76f66f61c1561a260c9dfd7a91bce860">pcl::octree::OctreePointCloudSearch::approxNearestSearch</a></div><div class="ttdeci">void approxNearestSearch(const PointCloud &amp;cloud, int query_index, int &amp;result_index, float &amp;sqr_distance)</div><div class="ttdoc">Search for approx. nearest neighbor at the query point.</div><div class="ttdef"><b>Definition:</b> octree_search.h:156</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aedaa8f43355000dbb0acc811c4b321fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedaa8f43355000dbb0acc811c4b321fb">&#9670;&nbsp;</a></span>approxNearestSearch() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::approxNearestSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>p_q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>result_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>sqr_distance</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for approx. nearest neighbor at the query point. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_q</td><td>the given query point </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">result_index</td><td>the resultant index of the neighbor point </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">sqr_distance</td><td>the resultant squared distance to the neighboring point </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;{</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  assert(this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2a74d829fa6bc41a9823e42b9bbb5e59">leaf_count_</a>&gt;0);</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  assert (isFinite (p_q) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to nearestKSearch!&quot;</span>);</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  </div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  OctreeKey key;</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  key.x = key.y = key.z = 0;</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2361d272532234458d3a6a5d32fe0d01">approxNearestSearchRecursive</a> (p_q, this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2ea6c9036575ec8e55ae59938036478a">root_node_</a>, key, 1, result_index, sqr_distance);</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160; </div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_base_html_a2a74d829fa6bc41a9823e42b9bbb5e59"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_base.html#a2a74d829fa6bc41a9823e42b9bbb5e59">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;::leaf_count_</a></div><div class="ttdeci">std::size_t leaf_count_</div><div class="ttdoc">Amount of leaf nodes</div><div class="ttdef"><b>Definition:</b> octree_base.h:573</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_base_html_a2ea6c9036575ec8e55ae59938036478a"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_base.html#a2ea6c9036575ec8e55ae59938036478a">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;::root_node_</a></div><div class="ttdeci">BranchNode * root_node_</div><div class="ttdoc">Pointer to root branch node of octree</div><div class="ttdef"><b>Definition:</b> octree_base.h:579</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a2361d272532234458d3a6a5d32fe0d01"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2361d272532234458d3a6a5d32fe0d01">pcl::octree::OctreePointCloudSearch::approxNearestSearchRecursive</a></div><div class="ttdeci">void approxNearestSearchRecursive(const PointT &amp;point, const BranchNode *node, const OctreeKey &amp;key, unsigned int tree_depth, int &amp;result_index, float &amp;sqr_distance)</div><div class="ttdoc">Recursive search method that explores the octree and finds the approximate nearest neighbor</div><div class="ttdef"><b>Definition:</b> octree_search.hpp:402</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9dbe80e71348afa35b7eea4e0d7de225"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9dbe80e71348afa35b7eea4e0d7de225">&#9670;&nbsp;</a></span>approxNearestSearch() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::approxNearestSearch </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>query_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>result_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>sqr_distance</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for approx. nearest neighbor at the query point. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">query_index</td><td>index representing the query point in the dataset given by <em>setInputCloud</em>. If indices were given in setInputCloud, index will be the position in the indices vector. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">result_index</td><td>the resultant index of the neighbor point </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">sqr_distance</td><td>the resultant squared distance to the neighboring point </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found </dd></dl>
<div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;{</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> search_point = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">getPointByIndex</a> (query_index);</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160; </div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a76f66f61c1561a260c9dfd7a91bce860">approxNearestSearch</a> (search_point, result_index, sqr_distance));</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_html_aa78eb05816a966b24bc939a6cfc625d3"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;::getPointByIndex</a></div><div class="ttdeci">const PointT &amp; getPointByIndex(const unsigned int index_arg) const</div><div class="ttdoc">Get point at index from input pointcloud dataset</div><div class="ttdef"><b>Definition:</b> octree_pointcloud.hpp:600</div></div>
<div class="ttc" id="astructpcl_1_1_point_x_y_z_r_g_b_a_html"><div class="ttname"><a href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a></div><div class="ttdoc">A point structure representing Euclidean xyz coordinates, and the RGBA color.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:540</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2361d272532234458d3a6a5d32fe0d01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2361d272532234458d3a6a5d32fe0d01">&#9670;&nbsp;</a></span>approxNearestSearchRecursive()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::approxNearestSearchRecursive </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const BranchNode *&#160;</td>
          <td class="paramname"><em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>tree_depth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>result_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>sqr_distance</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursive search method that explores the octree and finds the approximate nearest neighbor </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">node</td><td>current octree node to be explored </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>octree key addressing a leaf node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">tree_depth</td><td>current depth/level in the octree </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">result_index</td><td>result index is written to this reference </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">sqr_distance</td><td>squared distance to search </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;{</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> child_idx;</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> min_child_idx;</div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;  <span class="keywordtype">double</span> min_voxel_center_distance;</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160; </div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;  OctreeKey minChildKey;</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;  OctreeKey new_key;</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160; </div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;  <span class="keyword">const</span> OctreeNode* child_node;</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160; </div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  <span class="comment">// set minimum voxel distance to maximum value</span></div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  min_voxel_center_distance = std::numeric_limits&lt;double&gt;::max ();</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160; </div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  min_child_idx = 0xFF;</div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160; </div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;  <span class="comment">// iterate over all children</span></div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  <span class="keywordflow">for</span> (child_idx = 0; child_idx &lt; 8; child_idx++)</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;  {</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a39c116718d47fb0086ff94117551fc1d">branchHasChild</a> (*node, child_idx))</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;      <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160; </div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> voxel_center;</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <span class="keywordtype">double</span> voxelPointDist;</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160; </div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    new_key.x = (key.x &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 2)));</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;    new_key.y = (key.y &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 1)));</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    new_key.z = (key.z &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 0)));</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160; </div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    <span class="comment">// generate voxel center point for voxel at key</span></div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;    this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a6bea8ca3b8fe7b5c28bce6ca0d636789">genVoxelCenterFromOctreeKey</a> (new_key, tree_depth, voxel_center);</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160; </div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    voxelPointDist = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c6a211241668de62243825b1f95e76a">pointSquaredDist</a> (voxel_center, point);</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160; </div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    <span class="comment">// search for child voxel with shortest distance to search point</span></div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    <span class="keywordflow">if</span> (voxelPointDist &gt;= min_voxel_center_distance)</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;      <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160; </div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    min_voxel_center_distance = voxelPointDist;</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    min_child_idx = child_idx;</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    minChildKey = new_key;</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;  }</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160; </div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;  <span class="comment">// make sure we found at least one branch child</span></div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;  assert(min_child_idx&lt;8);</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160; </div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;  child_node = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a9a4721b246ca10cb45f130835e6e5f5b">getBranchChildPtr</a> (*node, min_child_idx);</div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160; </div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;  <span class="keywordflow">if</span> (tree_depth &lt; this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2727267eed42ae776bbd8ea84b91187d">octree_depth_</a>)</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;  {</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;    <span class="comment">// we have not reached maximum tree depth</span></div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;    <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2361d272532234458d3a6a5d32fe0d01">approxNearestSearchRecursive</a> (point, <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>BranchNode*<span class="keyword">&gt;</span> (child_node), minChildKey, tree_depth + 1, result_index,</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;                                  sqr_distance);</div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;  }</div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;  {</div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    <span class="comment">// we reached leaf node level</span></div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160; </div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    <span class="keywordtype">double</span> squared_dist;</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    <span class="keywordtype">double</span> smallest_squared_dist;</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    <span class="keywordtype">size_t</span> i;</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    std::vector&lt;int&gt; decoded_point_vector;</div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160; </div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;    <span class="keyword">const</span> LeafNode* child_leaf = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>LeafNode*<span class="keyword">&gt;</span> (child_node);</div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160; </div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;    smallest_squared_dist = std::numeric_limits&lt;double&gt;::max ();</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160; </div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;    <span class="comment">// decode leaf node into decoded_point_vector</span></div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;    (**child_leaf).getPointIndices (decoded_point_vector);</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160; </div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;    <span class="comment">// Linearly iterate over all decoded (unsorted) points</span></div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;    <span class="keywordflow">for</span> (i = 0; i &lt; decoded_point_vector.size (); i++)</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;    {</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;      <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp; candidate_point = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">getPointByIndex</a> (decoded_point_vector[i]);</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160; </div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;      <span class="comment">// calculate point distance to search point</span></div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;      squared_dist = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c6a211241668de62243825b1f95e76a">pointSquaredDist</a> (candidate_point, point);</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160; </div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;      <span class="comment">// check if a closer match is found</span></div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;      <span class="keywordflow">if</span> (squared_dist &gt;= smallest_squared_dist)</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160; </div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;      result_index = decoded_point_vector[i];</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;      smallest_squared_dist = squared_dist;</div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;      sqr_distance = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (squared_dist);</div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;    }</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  }</div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_base_html_a2727267eed42ae776bbd8ea84b91187d"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_base.html#a2727267eed42ae776bbd8ea84b91187d">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;::octree_depth_</a></div><div class="ttdeci">unsigned int octree_depth_</div><div class="ttdoc">Octree depth</div><div class="ttdef"><b>Definition:</b> octree_base.h:585</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_base_html_a39c116718d47fb0086ff94117551fc1d"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_base.html#a39c116718d47fb0086ff94117551fc1d">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;::branchHasChild</a></div><div class="ttdeci">bool branchHasChild(const BranchNode &amp;branch_arg, unsigned char child_idx_arg) const</div><div class="ttdoc">Check if branch is pointing to a particular child node</div><div class="ttdef"><b>Definition:</b> octree_base.h:324</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_base_html_a9a4721b246ca10cb45f130835e6e5f5b"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_base.html#a9a4721b246ca10cb45f130835e6e5f5b">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;::getBranchChildPtr</a></div><div class="ttdeci">OctreeNode * getBranchChildPtr(const BranchNode &amp;branch_arg, unsigned char child_idx_arg) const</div><div class="ttdoc">Retrieve a child node pointer for child node at child_idx.</div><div class="ttdef"><b>Definition:</b> octree_base.h:337</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_html_a6bea8ca3b8fe7b5c28bce6ca0d636789"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a6bea8ca3b8fe7b5c28bce6ca0d636789">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;::genVoxelCenterFromOctreeKey</a></div><div class="ttdeci">void genVoxelCenterFromOctreeKey(const OctreeKey &amp;key_arg, unsigned int tree_depth_arg, PointT &amp;point_arg) const</div><div class="ttdoc">Generate a point at center of octree voxel at given tree level</div><div class="ttdef"><b>Definition:</b> octree_pointcloud.hpp:733</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a9c6a211241668de62243825b1f95e76a"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c6a211241668de62243825b1f95e76a">pcl::octree::OctreePointCloudSearch::pointSquaredDist</a></div><div class="ttdeci">float pointSquaredDist(const PointT &amp;point_a, const PointT &amp;point_b) const</div><div class="ttdoc">Helper function to calculate the squared distance between two points</div><div class="ttdef"><b>Definition:</b> octree_search.hpp:498</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abf53270d1fe0590b0d44a286119cafb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf53270d1fe0590b0d44a286119cafb5">&#9670;&nbsp;</a></span>boxSearch()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::boxSearch </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3f &amp;&#160;</td>
          <td class="paramname"><em>min_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3f &amp;&#160;</td>
          <td class="paramname"><em>max_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for points within rectangular search area </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_pt</td><td>lower corner of search area </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_pt</td><td>upper corner of search area </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant point indices </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of points found within search area </dd></dl>
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;{</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160; </div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  OctreeKey key;</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  key.x = key.y = key.z = 0;</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160; </div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  k_indices.clear ();</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160; </div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a4736506b85b403d53265661cdc637cbc">boxSearchRecursive</a> (min_pt, max_pt, this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2ea6c9036575ec8e55ae59938036478a">root_node_</a>, key, 1, k_indices);</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160; </div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (k_indices.size ()));</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a4736506b85b403d53265661cdc637cbc"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a4736506b85b403d53265661cdc637cbc">pcl::octree::OctreePointCloudSearch::boxSearchRecursive</a></div><div class="ttdeci">void boxSearchRecursive(const Eigen::Vector3f &amp;min_pt, const Eigen::Vector3f &amp;max_pt, const BranchNode *node, const OctreeKey &amp;key, unsigned int tree_depth, std::vector&lt; int &gt; &amp;k_indices) const</div><div class="ttdoc">Recursive search method that explores the octree and finds points within a rectangular search area</div><div class="ttdef"><b>Definition:</b> octree_search.hpp:506</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4736506b85b403d53265661cdc637cbc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4736506b85b403d53265661cdc637cbc">&#9670;&nbsp;</a></span>boxSearchRecursive()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::boxSearchRecursive </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3f &amp;&#160;</td>
          <td class="paramname"><em>min_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3f &amp;&#160;</td>
          <td class="paramname"><em>max_pt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const BranchNode *&#160;</td>
          <td class="paramname"><em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>tree_depth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursive search method that explores the octree and finds points within a rectangular search area </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_pt</td><td>lower corner of search area </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_pt</td><td>upper corner of search area </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">node</td><td>current octree node to be explored </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>octree key addressing a leaf node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">tree_depth</td><td>current depth/level in the octree </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant point indices </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;{</div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;  <span class="comment">// child iterator</span></div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> child_idx;</div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160; </div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;  <span class="comment">// iterate over all children</span></div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;  <span class="keywordflow">for</span> (child_idx = 0; child_idx &lt; 8; child_idx++)</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;  {</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160; </div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    <span class="keyword">const</span> OctreeNode* child_node;</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    child_node = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a9a4721b246ca10cb45f130835e6e5f5b">getBranchChildPtr</a> (*node, child_idx);</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160; </div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    <span class="keywordflow">if</span> (!child_node)</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;      <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160; </div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;    OctreeKey new_key;</div>
<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;    <span class="comment">// generate new key for current branch voxel</span></div>
<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;    new_key.x = (key.x &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 2)));</div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;    new_key.y = (key.y &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 1)));</div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;    new_key.z = (key.z &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 0)));</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160; </div>
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;    <span class="comment">// voxel corners</span></div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;    Eigen::Vector3f lower_voxel_corner;</div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;    Eigen::Vector3f upper_voxel_corner;</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;    <span class="comment">// get voxel coordinates</span></div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;    this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ac63353c886559f6f801acb39147978a6">genVoxelBoundsFromOctreeKey</a> (new_key, tree_depth, lower_voxel_corner, upper_voxel_corner);</div>
<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160; </div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;    <span class="comment">// test if search region overlap with voxel space</span></div>
<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160; </div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;    <span class="keywordflow">if</span> ( !( (lower_voxel_corner (0) &gt; max_pt (0)) || (min_pt (0) &gt; upper_voxel_corner(0)) ||</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;            (lower_voxel_corner (1) &gt; max_pt (1)) || (min_pt (1) &gt; upper_voxel_corner(1)) ||</div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;            (lower_voxel_corner (2) &gt; max_pt (2)) || (min_pt (2) &gt; upper_voxel_corner(2)) ) )</div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;    {</div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160; </div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;      <span class="keywordflow">if</span> (tree_depth &lt; this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2727267eed42ae776bbd8ea84b91187d">octree_depth_</a>)</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;      {</div>
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;        <span class="comment">// we have not reached maximum tree depth</span></div>
<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;        <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a4736506b85b403d53265661cdc637cbc">boxSearchRecursive</a> (min_pt, max_pt, <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>BranchNode*<span class="keyword">&gt;</span> (child_node), new_key, tree_depth + 1, k_indices);</div>
<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;      }</div>
<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;      {</div>
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;        <span class="comment">// we reached leaf node level</span></div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;        <span class="keywordtype">size_t</span> i;</div>
<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;        std::vector&lt;int&gt; decoded_point_vector;</div>
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;        <span class="keywordtype">bool</span> bInBox;</div>
<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160; </div>
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;        <span class="keyword">const</span> LeafNode* child_leaf = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>LeafNode*<span class="keyword">&gt;</span> (child_node);</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160; </div>
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;        <span class="comment">// decode leaf node into decoded_point_vector</span></div>
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;        (**child_leaf).getPointIndices (decoded_point_vector);</div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160; </div>
<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;        <span class="comment">// Linearly iterate over all decoded (unsorted) points</span></div>
<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;        <span class="keywordflow">for</span> (i = 0; i &lt; decoded_point_vector.size (); i++)</div>
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        {</div>
<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;          <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp; candidate_point = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">getPointByIndex</a> (decoded_point_vector[i]);</div>
<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160; </div>
<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;          <span class="comment">// check if point falls within search box</span></div>
<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;          bInBox = ( (candidate_point.x &gt;= min_pt (0)) &amp;&amp; (candidate_point.x &lt;= max_pt (0)) &amp;&amp;</div>
<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;                     (candidate_point.y &gt;= min_pt (1)) &amp;&amp; (candidate_point.y &lt;= max_pt (1)) &amp;&amp;</div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;                     (candidate_point.z &gt;= min_pt (2)) &amp;&amp; (candidate_point.z &lt;= max_pt (2)) );</div>
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160; </div>
<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;          <span class="keywordflow">if</span> (bInBox)</div>
<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;            <span class="comment">// add to result vector</span></div>
<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;            k_indices.push_back (decoded_point_vector[i]);</div>
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;        }</div>
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;      }</div>
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;    }</div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;  }</div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_html_ac63353c886559f6f801acb39147978a6"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ac63353c886559f6f801acb39147978a6">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;::genVoxelBoundsFromOctreeKey</a></div><div class="ttdeci">void genVoxelBoundsFromOctreeKey(const OctreeKey &amp;key_arg, unsigned int tree_depth_arg, Eigen::Vector3f &amp;min_pt, Eigen::Vector3f &amp;max_pt) const</div><div class="ttdoc">Generate bounds of an octree voxel using octree key and tree depth arguments</div><div class="ttdef"><b>Definition:</b> octree_pointcloud.hpp:746</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad3dcc9a1781a9d8bb73b5ea1a6425709"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3dcc9a1781a9d8bb73b5ea1a6425709">&#9670;&nbsp;</a></span>getFirstIntersectedNode()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT  = OctreeContainerPointIndices, typename BranchContainerT  = OctreeContainerEmpty&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::getFirstIntersectedNode </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>mid_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>mid_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>mid_z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Find first child node ray will enter </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_x</td><td>octree nodes X coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_y</td><td>octree nodes Y coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_z</td><td>octree nodes Z coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mid_x</td><td>octree nodes X coordinate of bounding box mid line </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mid_y</td><td>octree nodes Y coordinate of bounding box mid line </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mid_z</td><td>octree nodes Z coordinate of bounding box mid line </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>the first child node ray will enter </dd></dl>
<div class="fragment"><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;        {</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;          <span class="keywordtype">int</span> currNode = 0;</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160; </div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;          <span class="keywordflow">if</span> (min_x &gt; min_y)</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;          {</div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;            <span class="keywordflow">if</span> (min_x &gt; min_z)</div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;            {</div>
<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;              <span class="comment">// max(min_x, min_y, min_z) is min_x. Entry plane is YZ.</span></div>
<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;              <span class="keywordflow">if</span> (mid_y &lt; min_x)</div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;                currNode |= 2;</div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;              <span class="keywordflow">if</span> (mid_z &lt; min_x)</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;                currNode |= 1;</div>
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;            }</div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;            {</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;              <span class="comment">// max(min_x, min_y, min_z) is min_z. Entry plane is XY.</span></div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;              <span class="keywordflow">if</span> (mid_x &lt; min_z)</div>
<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;                currNode |= 4;</div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;              <span class="keywordflow">if</span> (mid_y &lt; min_z)</div>
<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;                currNode |= 2;</div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;            }</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;          }</div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;          {</div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;            <span class="keywordflow">if</span> (min_y &gt; min_z)</div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;            {</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;              <span class="comment">// max(min_x, min_y, min_z) is min_y. Entry plane is XZ.</span></div>
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;              <span class="keywordflow">if</span> (mid_x &lt; min_y)</div>
<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;                currNode |= 4;</div>
<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;              <span class="keywordflow">if</span> (mid_z &lt; min_y)</div>
<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;                currNode |= 1;</div>
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;            }</div>
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;            {</div>
<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;              <span class="comment">// max(min_x, min_y, min_z) is min_z. Entry plane is XY.</span></div>
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;              <span class="keywordflow">if</span> (mid_x &lt; min_z)</div>
<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;                currNode |= 4;</div>
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;              <span class="keywordflow">if</span> (mid_y &lt; min_z)</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;                currNode |= 2;</div>
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;            }</div>
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;          }</div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160; </div>
<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;          <span class="keywordflow">return</span> currNode;</div>
<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae89d60007b4ba6a92e3c3dc879ab9538"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae89d60007b4ba6a92e3c3dc879ab9538">&#9670;&nbsp;</a></span>getIntersectedVoxelCenters()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::getIntersectedVoxelCenters </td>
          <td>(</td>
          <td class="paramtype">Eigen::Vector3f&#160;</td>
          <td class="paramname"><em>origin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3f&#160;</td>
          <td class="paramname"><em>direction</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>voxel_center_list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_voxel_count</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get a PointT vector of centers of all voxels that intersected by a ray (origin, direction). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">origin</td><td>ray origin </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">direction</td><td>ray direction vector </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">voxel_center_list</td><td>results are written to this vector of PointT elements </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_voxel_count</td><td>stop raycasting when this many voxels intersected (0: disable) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of intersected voxels </dd></dl>
<div class="fragment"><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;{</div>
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;  OctreeKey key;</div>
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;  key.x = key.y = key.z = 0;</div>
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160; </div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;  voxel_center_list.clear ();</div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160; </div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;  <span class="comment">// Voxel child_idx remapping</span></div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> a = 0;</div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160; </div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;  <span class="keywordtype">double</span> min_x, min_y, min_z, max_x, max_y, max_z;</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160; </div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;  <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c2837512d584123a6cdf26123feec99">initIntersectedVoxel</a> (origin, direction, min_x, min_y, min_z, max_x, max_y, max_z, a);</div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160; </div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;  <span class="keywordflow">if</span> (std::max (std::max (min_x, min_y), min_z) &lt; std::min (std::min (max_x, max_y), max_z))</div>
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (min_x, min_y, min_z, max_x, max_y, max_z, a, this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2ea6c9036575ec8e55ae59938036478a">root_node_</a>, key,</div>
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;                                                voxel_center_list, max_voxel_count);</div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160; </div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;  <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a265cd3d276609bd215c98d7680976e47"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">pcl::octree::OctreePointCloudSearch::getIntersectedVoxelCentersRecursive</a></div><div class="ttdeci">int getIntersectedVoxelCentersRecursive(double min_x, double min_y, double min_z, double max_x, double max_y, double max_z, unsigned char a, const OctreeNode *node, const OctreeKey &amp;key, AlignedPointTVector &amp;voxel_center_list, int max_voxel_count) const</div><div class="ttdoc">Recursively search the tree for all intersected leaf nodes and return a vector of voxel centers....</div><div class="ttdef"><b>Definition:</b> octree_search.hpp:631</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a9c2837512d584123a6cdf26123feec99"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c2837512d584123a6cdf26123feec99">pcl::octree::OctreePointCloudSearch::initIntersectedVoxel</a></div><div class="ttdeci">void initIntersectedVoxel(Eigen::Vector3f &amp;origin, Eigen::Vector3f &amp;direction, double &amp;min_x, double &amp;min_y, double &amp;min_z, double &amp;max_x, double &amp;max_y, double &amp;max_z, unsigned char &amp;a) const</div><div class="ttdoc">Initialize raytracing algorithm</div><div class="ttdef"><b>Definition:</b> octree_search.h:465</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a265cd3d276609bd215c98d7680976e47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a265cd3d276609bd215c98d7680976e47">&#9670;&nbsp;</a></span>getIntersectedVoxelCentersRecursive()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::getIntersectedVoxelCentersRecursive </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>max_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>max_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>max_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1octree_1_1_octree_node.html">OctreeNode</a> *&#160;</td>
          <td class="paramname"><em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>voxel_center_list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_voxel_count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursively search the tree for all intersected leaf nodes and return a vector of voxel centers. This algorithm is based off the paper An Efficient Parametric Algorithm for Octree Traversal: <a href="http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf">http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf</a> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_x</td><td>octree nodes X coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_y</td><td>octree nodes Y coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_z</td><td>octree nodes Z coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_x</td><td>octree nodes X coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_y</td><td>octree nodes Y coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_z</td><td>octree nodes Z coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">node</td><td>current octree node to be explored </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>octree key addressing a leaf node. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">voxel_center_list</td><td>results are written to this vector of PointT elements </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_voxel_count</td><td>stop raycasting when this many voxels intersected (0: disable) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of voxels found </dd></dl>
<div class="fragment"><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;{</div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;  <span class="keywordflow">if</span> (max_x &lt; 0.0 || max_y &lt; 0.0 || max_z &lt; 0.0)</div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;    <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160; </div>
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;  <span class="comment">// If leaf node, get voxel center and increment intersection count</span></div>
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;  <span class="keywordflow">if</span> (node-&gt;getNodeType () == LEAF_NODE)</div>
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;  {</div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;    <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> newPoint;</div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160; </div>
<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;    this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a342788d493c7a2520009179a0e321d7b">genLeafNodeCenterFromOctreeKey</a> (key, newPoint);</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160; </div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    voxel_center_list.push_back (newPoint);</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160; </div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;    <span class="keywordflow">return</span> (1);</div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;  }</div>
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160; </div>
<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;  <span class="comment">// Voxel intersection count for branches children</span></div>
<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;  <span class="keywordtype">int</span> voxel_count = 0;</div>
<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160; </div>
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;  <span class="comment">// Voxel mid lines</span></div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;  <span class="keywordtype">double</span> mid_x = 0.5 * (min_x + max_x);</div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;  <span class="keywordtype">double</span> mid_y = 0.5 * (min_y + max_y);</div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;  <span class="keywordtype">double</span> mid_z = 0.5 * (min_z + max_z);</div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160; </div>
<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;  <span class="comment">// First voxel node ray will intersect</span></div>
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;  <span class="keywordtype">int</span> curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#ad3dcc9a1781a9d8bb73b5ea1a6425709">getFirstIntersectedNode</a> (min_x, min_y, min_z, mid_x, mid_y, mid_z);</div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160; </div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;  <span class="comment">// Child index, node and key</span></div>
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> child_idx;</div>
<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;  <span class="keyword">const</span> OctreeNode *child_node;</div>
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;  OctreeKey child_key;</div>
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160; </div>
<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;  <span class="keywordflow">do</span></div>
<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;  {</div>
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    <span class="keywordflow">if</span> (curr_node != 0)</div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;      child_idx = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (curr_node ^ a);</div>
<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;      child_idx = a;</div>
<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160; </div>
<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    <span class="comment">// child_node == 0 if child_node doesn&#39;t exist</span></div>
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;    child_node = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a9a4721b246ca10cb45f130835e6e5f5b">getBranchChildPtr</a> (<span class="keyword">static_cast&lt;</span><span class="keyword">const </span>BranchNode&amp;<span class="keyword">&gt;</span> (*node), child_idx);</div>
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160; </div>
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;    <span class="comment">// Generate new key for current branch voxel</span></div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;    child_key.x = (key.x &lt;&lt; 1) | (!!(child_idx &amp; (1 &lt;&lt; 2)));</div>
<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;    child_key.y = (key.y &lt;&lt; 1) | (!!(child_idx &amp; (1 &lt;&lt; 1)));</div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;    child_key.z = (key.z &lt;&lt; 1) | (!!(child_idx &amp; (1 &lt;&lt; 0)));</div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160; </div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;    <span class="comment">// Recursively call each intersected child node, selecting the next</span></div>
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;    <span class="comment">//   node intersected by the ray.  Children that do not intersect will</span></div>
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;    <span class="comment">//   not be traversed.</span></div>
<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160; </div>
<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;    <span class="keywordflow">switch</span> (curr_node)</div>
<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;    {</div>
<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;      <span class="keywordflow">case</span> 0:</div>
<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (min_x, min_y, min_z, mid_x, mid_y, mid_z, a, child_node,</div>
<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;                                                             child_key, voxel_center_list, max_voxel_count);</div>
<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (mid_x, mid_y, mid_z, 4, 2, 1);</div>
<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160; </div>
<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;      <span class="keywordflow">case</span> 1:</div>
<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (min_x, min_y, mid_z, mid_x, mid_y, max_z, a, child_node,</div>
<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;                                                             child_key, voxel_center_list, max_voxel_count);</div>
<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (mid_x, mid_y, max_z, 5, 3, 8);</div>
<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160; </div>
<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;      <span class="keywordflow">case</span> 2:</div>
<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (min_x, mid_y, min_z, mid_x, max_y, mid_z, a, child_node,</div>
<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;                                                             child_key, voxel_center_list, max_voxel_count);</div>
<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (mid_x, max_y, mid_z, 6, 8, 3);</div>
<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160; </div>
<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;      <span class="keywordflow">case</span> 3:</div>
<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (min_x, mid_y, mid_z, mid_x, max_y, max_z, a, child_node,</div>
<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;                                                             child_key, voxel_center_list, max_voxel_count);</div>
<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (mid_x, max_y, max_z, 7, 8, 8);</div>
<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160; </div>
<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;      <span class="keywordflow">case</span> 4:</div>
<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (mid_x, min_y, min_z, max_x, mid_y, mid_z, a, child_node,</div>
<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;                                                             child_key, voxel_center_list, max_voxel_count);</div>
<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (max_x, mid_y, mid_z, 8, 6, 5);</div>
<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160; </div>
<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;      <span class="keywordflow">case</span> 5:</div>
<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (mid_x, min_y, mid_z, max_x, mid_y, max_z, a, child_node,</div>
<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;                                                             child_key, voxel_center_list, max_voxel_count);</div>
<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (max_x, mid_y, max_z, 8, 7, 8);</div>
<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160; </div>
<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;      <span class="keywordflow">case</span> 6:</div>
<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (mid_x, mid_y, min_z, max_x, max_y, mid_z, a, child_node,</div>
<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;                                                             child_key, voxel_center_list, max_voxel_count);</div>
<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (max_x, max_y, mid_z, 8, 8, 7);</div>
<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160; </div>
<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;      <span class="keywordflow">case</span> 7:</div>
<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a265cd3d276609bd215c98d7680976e47">getIntersectedVoxelCentersRecursive</a> (mid_x, mid_y, mid_z, max_x, max_y, max_z, a, child_node,</div>
<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;                                                             child_key, voxel_center_list, max_voxel_count);</div>
<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;        curr_node = 8;</div>
<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;    }</div>
<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;  } <span class="keywordflow">while</span> ((curr_node &lt; 8) &amp;&amp; (max_voxel_count &lt;= 0 || voxel_count &lt; max_voxel_count));</div>
<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;  <span class="keywordflow">return</span> (voxel_count);</div>
<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_html_a342788d493c7a2520009179a0e321d7b"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a342788d493c7a2520009179a0e321d7b">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;::genLeafNodeCenterFromOctreeKey</a></div><div class="ttdeci">void genLeafNodeCenterFromOctreeKey(const OctreeKey &amp;key_arg, PointT &amp;point_arg) const</div><div class="ttdoc">Generate a point at center of leaf node voxel</div><div class="ttdef"><b>Definition:</b> octree_pointcloud.hpp:723</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a27ee200992e4fced45f27e3d138e5b6f"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">pcl::octree::OctreePointCloudSearch::getNextIntersectedNode</a></div><div class="ttdeci">int getNextIntersectedNode(double x, double y, double z, int a, int b, int c) const</div><div class="ttdoc">Get the next visited node given the current node upper bounding box corner. This function accepts thr...</div><div class="ttdef"><b>Definition:</b> octree_search.h:578</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_ad3dcc9a1781a9d8bb73b5ea1a6425709"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#ad3dcc9a1781a9d8bb73b5ea1a6425709">pcl::octree::OctreePointCloudSearch::getFirstIntersectedNode</a></div><div class="ttdeci">int getFirstIntersectedNode(double min_x, double min_y, double min_z, double mid_x, double mid_y, double mid_z) const</div><div class="ttdoc">Find first child node ray will enter</div><div class="ttdef"><b>Definition:</b> octree_search.h:519</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9a4587e573349759836cf8146baeb00b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a4587e573349759836cf8146baeb00b">&#9670;&nbsp;</a></span>getIntersectedVoxelIndices()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::getIntersectedVoxelIndices </td>
          <td>(</td>
          <td class="paramtype">Eigen::Vector3f&#160;</td>
          <td class="paramname"><em>origin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3f&#160;</td>
          <td class="paramname"><em>direction</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_voxel_count</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get indices of all voxels that are intersected by a ray (origin, direction). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">origin</td><td>ray origin </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">direction</td><td>ray direction vector </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>resulting point indices from intersected voxels </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_voxel_count</td><td>stop raycasting when this many voxels intersected (0: disable) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of intersected voxels </dd></dl>
<div class="fragment"><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;{</div>
<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;  OctreeKey key;</div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;  key.x = key.y = key.z = 0;</div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160; </div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;  k_indices.clear ();</div>
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160; </div>
<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;  <span class="comment">// Voxel child_idx remapping</span></div>
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> a = 0;</div>
<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;  <span class="keywordtype">double</span> min_x, min_y, min_z, max_x, max_y, max_z;</div>
<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160; </div>
<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;  <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c2837512d584123a6cdf26123feec99">initIntersectedVoxel</a> (origin, direction, min_x, min_y, min_z, max_x, max_y, max_z, a);</div>
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160; </div>
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;  <span class="keywordflow">if</span> (std::max (std::max (min_x, min_y), min_z) &lt; std::min (std::min (max_x, max_y), max_z))</div>
<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (min_x, min_y, min_z, max_x, max_y, max_z, a, this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2ea6c9036575ec8e55ae59938036478a">root_node_</a>, key,</div>
<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;                                                k_indices, max_voxel_count);</div>
<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;  <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a722a3807b9e1ab10e7db5aeac79b001f"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">pcl::octree::OctreePointCloudSearch::getIntersectedVoxelIndicesRecursive</a></div><div class="ttdeci">int getIntersectedVoxelIndicesRecursive(double min_x, double min_y, double min_z, double max_x, double max_y, double max_z, unsigned char a, const OctreeNode *node, const OctreeKey &amp;key, std::vector&lt; int &gt; &amp;k_indices, int max_voxel_count) const</div><div class="ttdoc">Recursively search the tree for all intersected leaf nodes and return a vector of indices....</div><div class="ttdef"><b>Definition:</b> octree_search.hpp:749</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a722a3807b9e1ab10e7db5aeac79b001f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a722a3807b9e1ab10e7db5aeac79b001f">&#9670;&nbsp;</a></span>getIntersectedVoxelIndicesRecursive()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::getIntersectedVoxelIndicesRecursive </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>max_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>max_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>max_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1octree_1_1_octree_node.html">OctreeNode</a> *&#160;</td>
          <td class="paramname"><em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_voxel_count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursively search the tree for all intersected leaf nodes and return a vector of indices. This algorithm is based off the paper An Efficient Parametric Algorithm for Octree Traversal: <a href="http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf">http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf</a> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_x</td><td>octree nodes X coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_y</td><td>octree nodes Y coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_z</td><td>octree nodes Z coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_x</td><td>octree nodes X coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_y</td><td>octree nodes Y coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_z</td><td>octree nodes Z coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">node</td><td>current octree node to be explored </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>octree key addressing a leaf node. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>resulting indices </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_voxel_count</td><td>stop raycasting when this many voxels intersected (0: disable) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of voxels found </dd></dl>
<div class="fragment"><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;{</div>
<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;  <span class="keywordflow">if</span> (max_x &lt; 0.0 || max_y &lt; 0.0 || max_z &lt; 0.0)</div>
<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;    <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160; </div>
<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;  <span class="comment">// If leaf node, get voxel center and increment intersection count</span></div>
<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;  <span class="keywordflow">if</span> (node-&gt;getNodeType () == LEAF_NODE)</div>
<div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;  {</div>
<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;    <span class="keyword">const</span> LeafNode* leaf = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>LeafNode*<span class="keyword">&gt;</span> (node);</div>
<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160; </div>
<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;    <span class="comment">// decode leaf node into k_indices</span></div>
<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;    (*leaf)-&gt;getPointIndices (k_indices);</div>
<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160; </div>
<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;    <span class="keywordflow">return</span> (1);</div>
<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;  }</div>
<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160; </div>
<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;  <span class="comment">// Voxel intersection count for branches children</span></div>
<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;  <span class="keywordtype">int</span> voxel_count = 0;</div>
<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160; </div>
<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;  <span class="comment">// Voxel mid lines</span></div>
<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;  <span class="keywordtype">double</span> mid_x = 0.5 * (min_x + max_x);</div>
<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;  <span class="keywordtype">double</span> mid_y = 0.5 * (min_y + max_y);</div>
<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;  <span class="keywordtype">double</span> mid_z = 0.5 * (min_z + max_z);</div>
<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160; </div>
<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;  <span class="comment">// First voxel node ray will intersect</span></div>
<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;  <span class="keywordtype">int</span> curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#ad3dcc9a1781a9d8bb73b5ea1a6425709">getFirstIntersectedNode</a> (min_x, min_y, min_z, mid_x, mid_y, mid_z);</div>
<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160; </div>
<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;  <span class="comment">// Child index, node and key</span></div>
<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> child_idx;</div>
<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;  <span class="keyword">const</span> OctreeNode *child_node;</div>
<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;  OctreeKey child_key;</div>
<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;  <span class="keywordflow">do</span></div>
<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;  {</div>
<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;    <span class="keywordflow">if</span> (curr_node != 0)</div>
<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;      child_idx = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span> (curr_node ^ a);</div>
<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;      child_idx = a;</div>
<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160; </div>
<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;    <span class="comment">// child_node == 0 if child_node doesn&#39;t exist</span></div>
<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;    child_node = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a9a4721b246ca10cb45f130835e6e5f5b">getBranchChildPtr</a> (<span class="keyword">static_cast&lt;</span><span class="keyword">const </span>BranchNode&amp;<span class="keyword">&gt;</span> (*node), child_idx);</div>
<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;    <span class="comment">// Generate new key for current branch voxel</span></div>
<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;    child_key.x = (key.x &lt;&lt; 1) | (!!(child_idx &amp; (1 &lt;&lt; 2)));</div>
<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;    child_key.y = (key.y &lt;&lt; 1) | (!!(child_idx &amp; (1 &lt;&lt; 1)));</div>
<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;    child_key.z = (key.z &lt;&lt; 1) | (!!(child_idx &amp; (1 &lt;&lt; 0)));</div>
<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160; </div>
<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;    <span class="comment">// Recursively call each intersected child node, selecting the next</span></div>
<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;    <span class="comment">//   node intersected by the ray.  Children that do not intersect will</span></div>
<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;    <span class="comment">//   not be traversed.</span></div>
<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;    <span class="keywordflow">switch</span> (curr_node)</div>
<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;    {</div>
<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;      <span class="keywordflow">case</span> 0:</div>
<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (min_x, min_y, min_z, mid_x, mid_y, mid_z, a, child_node,</div>
<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;                                                             child_key, k_indices, max_voxel_count);</div>
<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (mid_x, mid_y, mid_z, 4, 2, 1);</div>
<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160; </div>
<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;      <span class="keywordflow">case</span> 1:</div>
<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (min_x, min_y, mid_z, mid_x, mid_y, max_z, a, child_node,</div>
<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;                                                             child_key, k_indices, max_voxel_count);</div>
<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (mid_x, mid_y, max_z, 5, 3, 8);</div>
<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160; </div>
<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;      <span class="keywordflow">case</span> 2:</div>
<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (min_x, mid_y, min_z, mid_x, max_y, mid_z, a, child_node,</div>
<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;                                                             child_key, k_indices, max_voxel_count);</div>
<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (mid_x, max_y, mid_z, 6, 8, 3);</div>
<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160; </div>
<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;      <span class="keywordflow">case</span> 3:</div>
<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (min_x, mid_y, mid_z, mid_x, max_y, max_z, a, child_node,</div>
<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;                                                             child_key, k_indices, max_voxel_count);</div>
<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (mid_x, max_y, max_z, 7, 8, 8);</div>
<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160; </div>
<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;      <span class="keywordflow">case</span> 4:</div>
<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (mid_x, min_y, min_z, max_x, mid_y, mid_z, a, child_node,</div>
<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;                                                             child_key, k_indices, max_voxel_count);</div>
<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (max_x, mid_y, mid_z, 8, 6, 5);</div>
<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160; </div>
<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;      <span class="keywordflow">case</span> 5:</div>
<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (mid_x, min_y, mid_z, max_x, mid_y, max_z, a, child_node,</div>
<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;                                                             child_key, k_indices, max_voxel_count);</div>
<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (max_x, mid_y, max_z, 8, 7, 8);</div>
<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160; </div>
<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;      <span class="keywordflow">case</span> 6:</div>
<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (mid_x, mid_y, min_z, max_x, max_y, mid_z, a, child_node,</div>
<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;                                                             child_key, k_indices, max_voxel_count);</div>
<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;        curr_node = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a27ee200992e4fced45f27e3d138e5b6f">getNextIntersectedNode</a> (max_x, max_y, mid_z, 8, 8, 7);</div>
<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160; </div>
<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;      <span class="keywordflow">case</span> 7:</div>
<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;        <span class="keywordflow">if</span> (child_node)</div>
<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;          voxel_count += <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a722a3807b9e1ab10e7db5aeac79b001f">getIntersectedVoxelIndicesRecursive</a> (mid_x, mid_y, mid_z, max_x, max_y, max_z, a, child_node,</div>
<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;                                                             child_key, k_indices, max_voxel_count);</div>
<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;        curr_node = 8;</div>
<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;    }</div>
<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;  } <span class="keywordflow">while</span> ((curr_node &lt; 8) &amp;&amp; (max_voxel_count &lt;= 0 || voxel_count &lt; max_voxel_count));</div>
<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160; </div>
<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;  <span class="keywordflow">return</span> (voxel_count);</div>
<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a907f077b8bcf8f7b85c0f181c9ac6fd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a907f077b8bcf8f7b85c0f181c9ac6fd8">&#9670;&nbsp;</a></span>getKNearestNeighborRecursive()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::getKNearestNeighborRecursive </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>K</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const BranchNode *&#160;</td>
          <td class="paramname"><em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>tree_depth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>squared_search_radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search_1_1prio_point_queue_entry.html">prioPointQueueEntry</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>point_candidates</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursive search method that explores the octree and finds the K nearest neighbors </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">K</td><td>amount of nearest neighbors to be found </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">node</td><td>current octree node to be explored </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>octree key addressing a leaf node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">tree_depth</td><td>current depth/level in the octree </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">squared_search_radius</td><td>squared search radius distance </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">point_candidates</td><td>priority queue of nearest neigbor point candidates </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>squared search radius based on current point candidate set found </dd></dl>
<div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;{</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  std::vector&lt;prioBranchQueueEntry&gt; search_heap;</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  search_heap.resize (8);</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160; </div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> child_idx;</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160; </div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  OctreeKey new_key;</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="keywordtype">double</span> smallest_squared_dist = squared_search_radius;</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="comment">// get spatial voxel information</span></div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  <span class="keywordtype">double</span> voxelSquaredDiameter = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a040db2cc8b3dcf73cdb4bea4fd37d53a">getVoxelSquaredDiameter</a> (tree_depth);</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  <span class="comment">// iterate over all children</span></div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  <span class="keywordflow">for</span> (child_idx = 0; child_idx &lt; 8; child_idx++)</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  {</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a39c116718d47fb0086ff94117551fc1d">branchHasChild</a> (*node, child_idx))</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    {</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;      <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> voxel_center;</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160; </div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      search_heap[child_idx].key.x = (key.x &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 2)));</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      search_heap[child_idx].key.y = (key.y &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 1)));</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;      search_heap[child_idx].key.z = (key.z &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 0)));</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      <span class="comment">// generate voxel center point for voxel at key</span></div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a6bea8ca3b8fe7b5c28bce6ca0d636789">genVoxelCenterFromOctreeKey</a> (search_heap[child_idx].key, tree_depth, voxel_center);</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160; </div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;      <span class="comment">// generate new priority queue element</span></div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      search_heap[child_idx].node = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a9a4721b246ca10cb45f130835e6e5f5b">getBranchChildPtr</a> (*node, child_idx);</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;      search_heap[child_idx].point_distance = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c6a211241668de62243825b1f95e76a">pointSquaredDist</a> (voxel_center, point);</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    }</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    {</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      search_heap[child_idx].point_distance = std::numeric_limits&lt;float&gt;::infinity ();</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    }</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  }</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  std::sort (search_heap.begin (), search_heap.end ());</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160; </div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  <span class="comment">// iterate over all children in priority queue</span></div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="comment">// check if the distance to search candidate is smaller than the best point distance (smallest_squared_dist)</span></div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  <span class="keywordflow">while</span> ((!search_heap.empty ()) &amp;&amp; (search_heap.back ().point_distance &lt;</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;         smallest_squared_dist + voxelSquaredDiameter / 4.0 + sqrt (smallest_squared_dist * voxelSquaredDiameter) - this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa9abbf2b0fedf04240be251def82a5b4">epsilon_</a>))</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  {</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <span class="keyword">const</span> OctreeNode* child_node;</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160; </div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <span class="comment">// read from priority queue element</span></div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    child_node = search_heap.back ().node;</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    new_key = search_heap.back ().key;</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160; </div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keywordflow">if</span> (tree_depth &lt; this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2727267eed42ae776bbd8ea84b91187d">octree_depth_</a>)</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    {</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      <span class="comment">// we have not reached maximum tree depth</span></div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      smallest_squared_dist = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a907f077b8bcf8f7b85c0f181c9ac6fd8">getKNearestNeighborRecursive</a> (point, K, <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>BranchNode*<span class="keyword">&gt;</span> (child_node), new_key, tree_depth + 1,</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;                                                            smallest_squared_dist, point_candidates);</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    }</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    {</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      <span class="comment">// we reached leaf node level</span></div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160; </div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      <span class="keywordtype">float</span> squared_dist;</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;      <span class="keywordtype">size_t</span> i;</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;      std::vector&lt;int&gt; decoded_point_vector;</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160; </div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;      <span class="keyword">const</span> LeafNode* child_leaf = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>LeafNode*<span class="keyword">&gt;</span> (child_node);</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160; </div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;      <span class="comment">// decode leaf node into decoded_point_vector</span></div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;      (*child_leaf)-&gt;getPointIndices (decoded_point_vector);</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160; </div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;      <span class="comment">// Linearly iterate over all decoded (unsorted) points</span></div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;      <span class="keywordflow">for</span> (i = 0; i &lt; decoded_point_vector.size (); i++)</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;      {</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp; candidate_point = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">getPointByIndex</a> (decoded_point_vector[i]);</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160; </div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;        <span class="comment">// calculate point distance to search point</span></div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;        squared_dist = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c6a211241668de62243825b1f95e76a">pointSquaredDist</a> (candidate_point, point);</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160; </div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;        <span class="comment">// check if a closer match is found</span></div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;        <span class="keywordflow">if</span> (squared_dist &lt; smallest_squared_dist)</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        {</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;          prioPointQueueEntry point_entry;</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160; </div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;          point_entry.point_distance_ = squared_dist;</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;          point_entry.point_idx_ = decoded_point_vector[i];</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;          point_candidates.push_back (point_entry);</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        }</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;      }</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160; </div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;      std::sort (point_candidates.begin (), point_candidates.end ());</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160; </div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;      <span class="keywordflow">if</span> (point_candidates.size () &gt; K)</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;        point_candidates.resize (K);</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160; </div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      <span class="keywordflow">if</span> (point_candidates.size () == K)</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        smallest_squared_dist = point_candidates.back ().point_distance_;</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    }</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="comment">// pop element from priority queue</span></div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    search_heap.pop_back ();</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  }</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160; </div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  <span class="keywordflow">return</span> (smallest_squared_dist);</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_html_a040db2cc8b3dcf73cdb4bea4fd37d53a"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud.html#a040db2cc8b3dcf73cdb4bea4fd37d53a">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;::getVoxelSquaredDiameter</a></div><div class="ttdeci">double getVoxelSquaredDiameter() const</div><div class="ttdoc">Calculates the squared diameter of a voxel at leaf depth</div><div class="ttdef"><b>Definition:</b> octree_pointcloud.h:359</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_html_aa9abbf2b0fedf04240be251def82a5b4"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa9abbf2b0fedf04240be251def82a5b4">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;::epsilon_</a></div><div class="ttdeci">double epsilon_</div><div class="ttdoc">Epsilon precision (error bound) for nearest neighbors searches.</div><div class="ttdef"><b>Definition:</b> octree_pointcloud.h:545</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a907f077b8bcf8f7b85c0f181c9ac6fd8"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a907f077b8bcf8f7b85c0f181c9ac6fd8">pcl::octree::OctreePointCloudSearch::getKNearestNeighborRecursive</a></div><div class="ttdeci">double getKNearestNeighborRecursive(const PointT &amp;point, unsigned int K, const BranchNode *node, const OctreeKey &amp;key, unsigned int tree_depth, const double squared_search_radius, std::vector&lt; prioPointQueueEntry &gt; &amp;point_candidates) const</div><div class="ttdoc">Recursive search method that explores the octree and finds the K nearest neighbors</div><div class="ttdef"><b>Definition:</b> octree_search.hpp:208</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a08c976a887a568daced02c11da5c75df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08c976a887a568daced02c11da5c75df">&#9670;&nbsp;</a></span>getNeighborsWithinRadiusRecursive()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::getNeighborsWithinRadiusRecursive </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>radiusSquared</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const BranchNode *&#160;</td>
          <td class="paramname"><em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1octree_1_1_octree_key.html">OctreeKey</a> &amp;&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>tree_depth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>max_nn</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursive search method that explores the octree and finds neighbors within a given radius </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radiusSquared</td><td>squared search radius </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">node</td><td>current octree node to be explored </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>octree key addressing a leaf node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">tree_depth</td><td>current depth/level in the octree </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>vector of indices found to be neighbors of query point </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>squared distances of neighbors to query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_nn</td><td>maximum of neighbors to be found </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;{</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  <span class="comment">// child iterator</span></div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> child_idx;</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160; </div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  <span class="comment">// get spatial voxel information</span></div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  <span class="keywordtype">double</span> voxel_squared_diameter = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a040db2cc8b3dcf73cdb4bea4fd37d53a">getVoxelSquaredDiameter</a> (tree_depth);</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160; </div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;  <span class="comment">// iterate over all children</span></div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  <span class="keywordflow">for</span> (child_idx = 0; child_idx &lt; 8; child_idx++)</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;  {</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a39c116718d47fb0086ff94117551fc1d">branchHasChild</a> (*node, child_idx))</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;      <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160; </div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="keyword">const</span> OctreeNode* child_node;</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    child_node = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a9a4721b246ca10cb45f130835e6e5f5b">getBranchChildPtr</a> (*node, child_idx);</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160; </div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    OctreeKey new_key;</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> voxel_center;</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    <span class="keywordtype">float</span> squared_dist;</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160; </div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <span class="comment">// generate new key for current branch voxel</span></div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    new_key.x = (key.x &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 2)));</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    new_key.y = (key.y &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 1)));</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    new_key.z = (key.z &lt;&lt; 1) + (!!(child_idx &amp; (1 &lt;&lt; 0)));</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160; </div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    <span class="comment">// generate voxel center point for voxel at key</span></div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#a6bea8ca3b8fe7b5c28bce6ca0d636789">genVoxelCenterFromOctreeKey</a> (new_key, tree_depth, voxel_center);</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160; </div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <span class="comment">// calculate distance to search point</span></div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    squared_dist = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c6a211241668de62243825b1f95e76a">pointSquaredDist</a> (<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp;<span class="keyword">&gt;</span> (voxel_center), point);</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160; </div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    <span class="comment">// if distance is smaller than search radius</span></div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    <span class="keywordflow">if</span> (squared_dist + this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa9abbf2b0fedf04240be251def82a5b4">epsilon_</a></div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;        &lt;= voxel_squared_diameter / 4.0 + radiusSquared + sqrt (voxel_squared_diameter * radiusSquared))</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    {</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160; </div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;      <span class="keywordflow">if</span> (tree_depth &lt; this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2727267eed42ae776bbd8ea84b91187d">octree_depth_</a>)</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;      {</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        <span class="comment">// we have not reached maximum tree depth</span></div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a08c976a887a568daced02c11da5c75df">getNeighborsWithinRadiusRecursive</a> (point, radiusSquared, <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>BranchNode*<span class="keyword">&gt;</span> (child_node), new_key, tree_depth + 1,</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;                                           k_indices, k_sqr_distances, max_nn);</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;        <span class="keywordflow">if</span> (max_nn != 0 &amp;&amp; k_indices.size () == <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (max_nn))</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;          <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;      }</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;      {</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        <span class="comment">// we reached leaf node level</span></div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160; </div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        <span class="keywordtype">size_t</span> i;</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        <span class="keyword">const</span> LeafNode* child_leaf = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>LeafNode*<span class="keyword">&gt;</span> (child_node);</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        std::vector&lt;int&gt; decoded_point_vector;</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160; </div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        <span class="comment">// decode leaf node into decoded_point_vector</span></div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;        (*child_leaf)-&gt;getPointIndices (decoded_point_vector);</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160; </div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;        <span class="comment">// Linearly iterate over all decoded (unsorted) points</span></div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;        <span class="keywordflow">for</span> (i = 0; i &lt; decoded_point_vector.size (); i++)</div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        {</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;          <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp; candidate_point = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">getPointByIndex</a> (decoded_point_vector[i]);</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160; </div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;          <span class="comment">// calculate point distance to search point</span></div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;          squared_dist = <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a9c6a211241668de62243825b1f95e76a">pointSquaredDist</a> (candidate_point, point);</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160; </div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;          <span class="comment">// check if a match is found</span></div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;          <span class="keywordflow">if</span> (squared_dist &gt; radiusSquared)</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160; </div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;          <span class="comment">// add point to result vector</span></div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;          k_indices.push_back (decoded_point_vector[i]);</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;          k_sqr_distances.push_back (squared_dist);</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160; </div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;          <span class="keywordflow">if</span> (max_nn != 0 &amp;&amp; k_indices.size () == <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (max_nn))</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;        }</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;      }</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    }</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;  }</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a08c976a887a568daced02c11da5c75df"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a08c976a887a568daced02c11da5c75df">pcl::octree::OctreePointCloudSearch::getNeighborsWithinRadiusRecursive</a></div><div class="ttdeci">void getNeighborsWithinRadiusRecursive(const PointT &amp;point, const double radiusSquared, const BranchNode *node, const OctreeKey &amp;key, unsigned int tree_depth, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn) const</div><div class="ttdoc">Recursive search method that explores the octree and finds neighbors within a given radius</div><div class="ttdef"><b>Definition:</b> octree_search.hpp:317</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a27ee200992e4fced45f27e3d138e5b6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27ee200992e4fced45f27e3d138e5b6f">&#9670;&nbsp;</a></span>getNextIntersectedNode()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT  = OctreeContainerPointIndices, typename BranchContainerT  = OctreeContainerEmpty&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::getNextIntersectedNode </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>c</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the next visited node given the current node upper bounding box corner. This function accepts three float values, and three int values. The function returns the ith integer where the ith float value is the minimum of the three float values. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>current nodes X coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>current nodes Y coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">z</td><td>current nodes Z coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>next node if exit Plane YZ </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>next node if exit Plane XZ </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>next node if exit Plane XY </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>the next child node ray will enter or 8 if exiting </dd></dl>
<div class="fragment"><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;        {</div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;          <span class="keywordflow">if</span> (x &lt; y)</div>
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;          {</div>
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;            <span class="keywordflow">if</span> (x &lt; z)</div>
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;              <span class="keywordflow">return</span> a;</div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;              <span class="keywordflow">return</span> c;</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;          }</div>
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;          {</div>
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;            <span class="keywordflow">if</span> (y &lt; z)</div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;              <span class="keywordflow">return</span> b;</div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;              <span class="keywordflow">return</span> c;</div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;          }</div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160; </div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;          <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a9c2837512d584123a6cdf26123feec99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c2837512d584123a6cdf26123feec99">&#9670;&nbsp;</a></span>initIntersectedVoxel()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT  = OctreeContainerPointIndices, typename BranchContainerT  = OctreeContainerEmpty&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::initIntersectedVoxel </td>
          <td>(</td>
          <td class="paramtype">Eigen::Vector3f &amp;&#160;</td>
          <td class="paramname"><em>origin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3f &amp;&#160;</td>
          <td class="paramname"><em>direction</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>min_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>min_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>min_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>max_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>max_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>max_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char &amp;&#160;</td>
          <td class="paramname"><em>a</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Initialize raytracing algorithm </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">origin</td><td></td></tr>
    <tr><td class="paramdir"></td><td class="paramname">direction</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_x</td><td>octree nodes X coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_y</td><td>octree nodes Y coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">min_z</td><td>octree nodes Z coordinate of lower bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_x</td><td>octree nodes X coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_y</td><td>octree nodes Y coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_z</td><td>octree nodes Z coordinate of upper bounding box corner </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">a</td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;        {</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;          <span class="comment">// Account for division by zero when direction vector is 0.0</span></div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;          <span class="keyword">const</span> <span class="keywordtype">float</span> epsilon = 1e-10f;</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;          <span class="keywordflow">if</span> (direction.x () == 0.0)</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;            direction.x () = epsilon;</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;          <span class="keywordflow">if</span> (direction.y () == 0.0)</div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;            direction.y () = epsilon;</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;          <span class="keywordflow">if</span> (direction.z () == 0.0)</div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;            direction.z () = epsilon;</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160; </div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;          <span class="comment">// Voxel childIdx remapping</span></div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;          a = 0;</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160; </div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;          <span class="comment">// Handle negative axis direction vector</span></div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;          <span class="keywordflow">if</span> (direction.x () &lt; 0.0)</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;          {</div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;            origin.x () = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (this-&gt;min_x_) + <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (this-&gt;max_x_) - origin.x ();</div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;            direction.x () = -direction.x ();</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;            a |= 4;</div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;          }</div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;          <span class="keywordflow">if</span> (direction.y () &lt; 0.0)</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;          {</div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;            origin.y () = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (this-&gt;min_y_) + <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (this-&gt;max_y_) - origin.y ();</div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;            direction.y () = -direction.y ();</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;            a |= 2;</div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;          }</div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;          <span class="keywordflow">if</span> (direction.z () &lt; 0.0)</div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;          {</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;            origin.z () = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (this-&gt;min_z_) + <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (this-&gt;max_z_) - origin.z ();</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;            direction.z () = -direction.z ();</div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;            a |= 1;</div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;          }</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;          min_x = (this-&gt;min_x_ - origin.x ()) / direction.x ();</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;          max_x = (this-&gt;max_x_ - origin.x ()) / direction.x ();</div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;          min_y = (this-&gt;min_y_ - origin.y ()) / direction.y ();</div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;          max_y = (this-&gt;max_y_ - origin.y ()) / direction.y ();</div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;          min_z = (this-&gt;min_z_ - origin.z ()) / direction.z ();</div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;          max_z = (this-&gt;max_z_ - origin.z ()) / direction.z ();</div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a21d3818a5a56eef093a0f556b3b1ff60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a21d3818a5a56eef093a0f556b3b1ff60">&#9670;&nbsp;</a></span>nearestKSearch() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT  = OctreeContainerPointIndices, typename BranchContainerT  = OctreeContainerEmpty&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::nearestKSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Search for k-nearest neighbors at the query point. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the point cloud data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>the index in <em>cloud</em> representing the query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">k</td><td>the number of neighbors to search for </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points (must be resized to <em>k</em> a priori!) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points (must be resized to <em>k</em> a priori!) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found </dd></dl>
<div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        {</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a21d3818a5a56eef093a0f556b3b1ff60">nearestKSearch</a> (cloud[index], k, k_indices, k_sqr_distances));</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a21d3818a5a56eef093a0f556b3b1ff60"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a21d3818a5a56eef093a0f556b3b1ff60">pcl::octree::OctreePointCloudSearch::nearestKSearch</a></div><div class="ttdeci">int nearestKSearch(const PointCloud &amp;cloud, int index, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances)</div><div class="ttdoc">Search for k-nearest neighbors at the query point.</div><div class="ttdef"><b>Definition:</b> octree_search.h:119</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa631ebe91256e5e62d092eab41e63ab1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa631ebe91256e5e62d092eab41e63ab1">&#9670;&nbsp;</a></span>nearestKSearch() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::nearestKSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>p_q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for k-nearest neighbors at given query point. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_q</td><td>the given query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">k</td><td>the number of neighbors to search for </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points (must be resized to k a priori!) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points (must be resized to k a priori!) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found </dd></dl>
<div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;{</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  assert(this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2a74d829fa6bc41a9823e42b9bbb5e59">leaf_count_</a>&gt;0);</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  assert (isFinite (p_q) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to nearestKSearch!&quot;</span>);</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  k_indices.clear ();</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  k_sqr_distances.clear ();</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160; </div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordflow">if</span> (k &lt; 1)</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  </div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> result_count;</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  prioPointQueueEntry point_entry;</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  std::vector&lt;prioPointQueueEntry&gt; point_candidates;</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160; </div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  OctreeKey key;</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  key.x = key.y = key.z = 0;</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <span class="comment">// initalize smallest point distance in search with high value</span></div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <span class="keywordtype">double</span> smallest_dist = std::numeric_limits&lt;double&gt;::max ();</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a907f077b8bcf8f7b85c0f181c9ac6fd8">getKNearestNeighborRecursive</a> (p_q, k, this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2ea6c9036575ec8e55ae59938036478a">root_node_</a>, key, 1, smallest_dist, point_candidates);</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  result_count = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (point_candidates.size ());</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160; </div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  k_indices.resize (result_count);</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  k_sqr_distances.resize (result_count);</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  </div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="keywordflow">for</span> (i = 0; i &lt; result_count; ++i)</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  {</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    k_indices [i] = point_candidates [i].point_idx_;</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    k_sqr_distances [i] = point_candidates [i].point_distance_;</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  }</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (k_indices.size ());</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a6c7167376eca831089b7848438ffdb82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c7167376eca831089b7848438ffdb82">&#9670;&nbsp;</a></span>nearestKSearch() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::nearestKSearch </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for k-nearest neighbors at query point </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>index representing the query point in the dataset given by <em>setInputCloud</em>. If indices were given in setInputCloud, index will be the position in the indices vector. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">k</td><td>the number of neighbors to search for </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points (must be resized to <em>k</em> a priori!) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points (must be resized to <em>k</em> a priori!) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found </dd></dl>
<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;{</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> search_point = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">getPointByIndex</a> (index);</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a21d3818a5a56eef093a0f556b3b1ff60">nearestKSearch</a> (search_point, k, k_indices, k_sqr_distances));</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a9c6a211241668de62243825b1f95e76a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c6a211241668de62243825b1f95e76a">&#9670;&nbsp;</a></span>pointSquaredDist()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::pointSquaredDist </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>point_a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>point_b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Helper function to calculate the squared distance between two points </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point_a</td><td>point A </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">point_b</td><td>point B </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>squared distance between point A and point B </dd></dl>
<div class="fragment"><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;{</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;  <span class="keywordflow">return</span> (point_a.getVector3fMap () - point_b.getVector3fMap ()).squaredNorm ();</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a2af4c4588b2b73cfcd74fb1f906f2b45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2af4c4588b2b73cfcd74fb1f906f2b45">&#9670;&nbsp;</a></span>radiusSearch() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT  = OctreeContainerPointIndices, typename BranchContainerT  = OctreeContainerEmpty&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::radiusSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>max_nn</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Search for all neighbors of query point that are within a given radius. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the point cloud data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>the index in <em>cloud</em> representing the query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the radius of the sphere bounding all of p_q's neighbors </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_nn</td><td>if given, bounds the maximum returned neighbors to this value </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found in radius </dd></dl>
<div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        {</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;          <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2af4c4588b2b73cfcd74fb1f906f2b45">radiusSearch</a> (cloud.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>[index], radius, k_indices, k_sqr_distances, max_nn));</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_a2af4c4588b2b73cfcd74fb1f906f2b45"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2af4c4588b2b73cfcd74fb1f906f2b45">pcl::octree::OctreePointCloudSearch::radiusSearch</a></div><div class="ttdeci">int radiusSearch(const PointCloud &amp;cloud, int index, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0)</div><div class="ttdoc">Search for all neighbors of query point that are within a given radius.</div><div class="ttdef"><b>Definition:</b> octree_search.h:189</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3e8ab16c43fca6296b1c38fd5c9028b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e8ab16c43fca6296b1c38fd5c9028b7">&#9670;&nbsp;</a></span>radiusSearch() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::radiusSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>p_q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>max_nn</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for all neighbors of query point that are within a given radius. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_q</td><td>the given query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the radius of the sphere bounding all of p_q's neighbors </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_nn</td><td>if given, bounds the maximum returned neighbors to this value </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found in radius </dd></dl>
<div class="fragment"><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;{</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  assert (isFinite (p_q) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to nearestKSearch!&quot;</span>);</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  OctreeKey key;</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  key.x = key.y = key.z = 0;</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160; </div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  k_indices.clear ();</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  k_sqr_distances.clear ();</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a08c976a887a568daced02c11da5c75df">getNeighborsWithinRadiusRecursive</a> (p_q, radius * radius, this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a2ea6c9036575ec8e55ae59938036478a">root_node_</a>, key, 1, k_indices, k_sqr_distances,</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;                                     max_nn);</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (k_indices.size ()));</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="afa074a6d13e7b9399e0cb31e23da6d10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa074a6d13e7b9399e0cb31e23da6d10">&#9670;&nbsp;</a></span>radiusSearch() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::radiusSearch </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>max_nn</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for all neighbors of query point that are within a given radius. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>index representing the query point in the dataset given by <em>setInputCloud</em>. If indices were given in setInputCloud, index will be the position in the indices vector </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>radius of the sphere bounding all of p_q's neighbors </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_nn</td><td>if given, bounds the maximum returned neighbors to this value </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found in radius </dd></dl>
<div class="fragment"><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;{</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> search_point = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">getPointByIndex</a> (index);</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#a2af4c4588b2b73cfcd74fb1f906f2b45">radiusSearch</a> (search_point, radius, k_indices, k_sqr_distances, max_nn));</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a69d3bb3040880d640a84361618964c1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69d3bb3040880d640a84361618964c1b">&#9670;&nbsp;</a></span>voxelSearch() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::voxelSearch </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>point_idx_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for neighbors within a voxel at given point referenced by a point index </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>the index in input cloud defining the query point </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">point_idx_data</td><td>the resultant indices of the neighboring voxel points </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>"true" if leaf node exist; "false" otherwise </dd></dl>
<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;{</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> search_point = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#aa78eb05816a966b24bc939a6cfc625d3">getPointByIndex</a> (index);</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;  <span class="keywordflow">return</span> (this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#afb43baee48b83316cce5d4003561aabb">voxelSearch</a> (search_point, point_idx_data));</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_search_html_afb43baee48b83316cce5d4003561aabb"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud_search.html#afb43baee48b83316cce5d4003561aabb">pcl::octree::OctreePointCloudSearch::voxelSearch</a></div><div class="ttdeci">bool voxelSearch(const PointT &amp;point, std::vector&lt; int &gt; &amp;point_idx_data)</div><div class="ttdoc">Search for neighbors within a voxel at given point</div><div class="ttdef"><b>Definition:</b> octree_search.hpp:46</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="afb43baee48b83316cce5d4003561aabb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb43baee48b83316cce5d4003561aabb">&#9670;&nbsp;</a></span>voxelSearch() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename LeafContainerT , typename BranchContainerT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">pcl::octree::OctreePointCloudSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, LeafContainerT, BranchContainerT &gt;::voxelSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>point_idx_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for neighbors within a voxel at given point </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>point addressing a leaf node voxel </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">point_idx_data</td><td>the resultant indices of the neighboring voxel points </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>"true" if leaf node exist; "false" otherwise </dd></dl>
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;{</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  assert (isFinite (point) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to nearestKSearch!&quot;</span>);</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  OctreeKey key;</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <span class="keywordtype">bool</span> b_success = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <span class="comment">// generate key</span></div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;  this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad34b5c6655fdcf9ed4da21ac8a973e5f">genOctreeKeyforPoint</a> (point, key);</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  LeafContainerT* leaf = this-&gt;<a class="code" href="classpcl_1_1octree_1_1_octree_base.html#a8cb31ab9a56944b96eef0ace8dedacbe">findLeaf</a> (key);</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160; </div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <span class="keywordflow">if</span> (leaf)</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  {</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    (*leaf).getPointIndices (point_idx_data);</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    b_success = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  }</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="keywordflow">return</span> (b_success);</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_base_html_a8cb31ab9a56944b96eef0ace8dedacbe"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_base.html#a8cb31ab9a56944b96eef0ace8dedacbe">pcl::octree::OctreeBase&lt; OctreeContainerPointIndices, OctreeContainerEmpty &gt;::findLeaf</a></div><div class="ttdeci">OctreeContainerPointIndices * findLeaf(unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)</div><div class="ttdoc">Find leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).</div><div class="ttdef"><b>Definition:</b> octree_base.hpp:108</div></div>
<div class="ttc" id="aclasspcl_1_1octree_1_1_octree_point_cloud_html_ad34b5c6655fdcf9ed4da21ac8a973e5f"><div class="ttname"><a href="classpcl_1_1octree_1_1_octree_point_cloud.html#ad34b5c6655fdcf9ed4da21ac8a973e5f">pcl::octree::OctreePointCloud&lt; PointT, OctreeContainerPointIndices, OctreeContainerEmpty &gt;::genOctreeKeyforPoint</a></div><div class="ttdeci">void genOctreeKeyforPoint(const PointT &amp;point_arg, OctreeKey &amp;key_arg) const</div><div class="ttdoc">Generate octree key for voxel at a given point</div><div class="ttdef"><b>Definition:</b> octree_pointcloud.hpp:680</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>octree/include/pcl/octree/<a class="el" href="octree__search_8h_source.html">octree_search.h</a></li>
<li>octree/include/pcl/octree/impl/<a class="el" href="octree__search_8hpp_source.html">octree_search.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><b>octree</b></li><li class="navelem"><a class="el" href="classpcl_1_1octree_1_1_octree_point_cloud_search.html">OctreePointCloudSearch</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
